求出2~1000中所有的完数
程序代码:
# include <stdio.h>
int main(void)
{
int i, j, k, t, count=0;
printf("2-1000的所有完数如下:\n");
for(i=2; i<=1000; i++)
{
t = 0;
for(j=1; j<i; j++)
{
if(i%j == 0)
t+=j; //标记行;
}
if(t == i) //求出完数并输出该完数及其所有真因子;
{
count++;
printf("第%d个完数为:%d,其真因子为:", count, i);
for(j=1; j<i; j++)
if(t%j == 0)
printf("%-5d", j);
printf("\n");
}
}
return 0;
}
/*
总结:所谓真因子就是一个正整数除了它本身之外的约数;
在VC++6.0中的执行结果如下:
-------------------------------------
2-1000的所有完数如下:
第1个完数为:6,其真因子为:1 2 3
第2个完数为:28,其真因子为:1 2 4 7 14
第3个完数为:496,其真因子为:1 2 4 8 16 31 62 124 248
-------------------------------------
*/