august 发表于 2007-6-11 05:22:24

一个求完数的问题

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程   找出1000以内的所有完数。
#include<stdio.h>
main()
{
          int i,j,sum;
for(i=1; i<1000; i++)
{
          sum=0;
   for(j=1; j<=i/2; j++)
          if(i%j==0) sum+=j;
          if(sum==i)
          printf("%d是完数\n",i);
}
}

这里的 for(j=1;j<=i/2;j++)的j<=i/2 是什么意思呢?

duzhi5368 发表于 2007-6-11 16:33:31

这个是节省循环处理判断.
因为任何数的因子不可能大于此数本身的1/2
当然此处改为j < i也未尝不可,但是白白浪费了i/2的循环.无意义
页: [1]
查看完整版本: 一个求完数的问题