数学趣题——完全数
如果一个数等于它的因子之和,就为完全数。求出1000以内的完全数
穷举法:(1)求出a的所有因子(2)检测所有因子和是不是等于a
1: #include <stdio.h>
2:
3: int factorSum(int a) /*求a的因子和*/
4: {
5: int i, sum = 0;
6: for(i=1;i<a;i++)
7: if(a%i == 0) /*i是a的一个因子*/
8: sum = sum + i; /*累加求和*/
9: return sum; /*返回a的因子的和*/
10: }
11:
12: int perfextnumber(int a) /*判断a是否是完全数*/
13: {
14: if(a == factorSum(a)) return 1;
15: else return 0;
16: }
17:
18: int main()
19: {
20: int a;
21: printf("There are following perfect numbers 1~1000 are:\n");
22: for(a=1;a<=1000;a++)
23: { /*寻找1-1000以内的完全数*/
24: if(perfextnumber(a))
25: printf("%d ",a);
26: }
27: }
28: