2
完数(5分)
题目内容:
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。
现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。
提示:可以写一个函数来判断某个数是否是完数。
输入格式:
两个正整数,以空格分隔。
输出格式:
其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行。
输入样例:
1 10
输出样例:
6
时间限制:800ms内存限制:32000kb
1 #include <stdio.h> 2 int wanshu(int); 3 main() 4 { 5 int i, n, m, cnt = 0; 6 scanf("%d %d", &n, &m); 7 for (i = n; i <= m; i++) 8 { 9 if (wanshu(i)) 10 { 11 cnt++; 12 if ((cnt != 0) && (cnt != 1)) 13 { 14 printf(" "); 15 } 16 printf("%d", i); 17 } 18 } 19 } 20 21 int wanshu(int i) 22 { 23 int j, sum = 0, a; 24 for (j = 1; j < i; j++) 25 { 26 if (i%j == 0) 27 { 28 sum = sum + j; 29 } 30 } 31 if (sum == i) 32 { 33 a = 1; 34 } 35 else 36 { 37 a = 0; 38 } 39 return a; 40 }