一个求完数的问题
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如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 是什么意思呢? 这个是节省循环处理判断.
因为任何数的因子不可能大于此数本身的1/2
当然此处改为j < i也未尝不可,但是白白浪费了i/2的循环.无意义
页:
[1]