#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c, d;
a = 1;
b = 1;
d = 0;
while (a <= 5000)
{
while (b <= (a - 1))
{
c = a%b;
if (c == 0)
{
d = d + b;
b = b + 1;
}
else
b = b + 1;
}
if (a == d)
{
printf("%d\n", a);
a = a + 1;
}
else
a = a + 1;
b = 1;
d = 0;
}
return 0;
}
我改了一下你的代码,看看吧, 这样就行了
c==0
a==d
#include<stdio.h>
int main()
{
int i, j, s; /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/
for( i=2; i<=1000; i++ )
{
s=0; /*保证每次循环时s的初值为0*/
for( j=1; j<i; j++ )
{
if(i%j == 0) /*判断j是否为i的因子*/
s += j;
}
if(s == i) /*判断因子这和是否和原数相等*/
printf("%d\n", i);
}
return 0;
}