Найти все совершенные числа, меньшие N
Помогите. Столкнулся с очень странной проблемой своего рода. На лабораторную дали задачу. Теоретически все правильно написал, но, к сожалению, ответ выводится не всегда. Посмотрите, пожалуйста, в чем ошибка. Заранее спасибо!
Найти все совершенные числа, меньшие N. Число называется совершенным, если оно равно сумме всех своих делителей за исключением самого числа. Например, 6=1+2+3
Вот сам код, который, к сожалению, не работает:
#include <stdio.h>
#include<math.h>
#include<locale.h>
void main()
{
setlocale(LC_ALL,"RUSSIAN");
int N,i=1,sum=0,n=1;
printf("введите N\n");
scanf("%d",&N);
for (i=1;i<N;i++)
{
for (n=1;n<i;n++)
{
if (i%n==0)
sum=sum+n;
}
if (i==sum) printf("совершенное %d\n", i);
}
}
Программа на Си.