如果一个数恰好等于它的因子之和,那么这个数就被成为完全数。例如6 = 1 + 2 +3。编写程序求出1-1000以内的完全数。
我们知道,如果求出1-1000之内的完全数,我们肯定可以想到,使用穷举法,从1开始到1000判断每个数是否是完全数,因此我们对与每一个数,进行判断,该数是否是完全数,而完全数,需要我们把这个数的所有因子求出,然后将所有因子进行相加,与原数想比较,即可判断该数是否是完全数。因此我们编写两个函数,一个用来返回一个数的因子之和,一个判断该数是否为完全数。代码如下:
- #include <stdio.h>
-
-
int factorsum(int n)
-
{
-
int i,sum = 0;
-
for(i=1; i<n; i++)
-
if(n%i == 0)
-
sum += i;
-
-
return sum;
-
}
-
-
int perfexNumber(int n)
-
{
-
if(n == factorsum(n))
-
return 1;
-
else
-
return 0;
-
}
-
-
int main(int argc, char *argv[])
-
{
-
int i;
-
printf("there are following perfect number 1~1000 are:\n");
-
for(i=1; i<1000; i++){
-
if(perfexNumber(i))
-
printf("%d ",i);
-
}
-
-
printf("\n");
-
return 0;
-
}
程序执行结果:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
there are following perfect number 1~1000 are:
6 28 496
阅读(2115) | 评论(0) | 转发(0) |