题目地址:http://ac.jobdu.com/problem.php?id=1060
题目描述:
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”。
输入:
题目没有任何输入。
输出:
输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。
1 #include<stdio.h> 2 3 int main() 4 { 5 int sum,i,j; 6 7 printf("E:"); 8 for(i=2;i<=60;i++){ 9 for(sum=0,j=i/2;j>0;j--){ 10 if(i%j==0) sum+=j; 11 } 12 if(sum==i) printf(" %d",i); 13 } 14 printf("\n"); 15 16 printf("G:"); 17 for(i=2;i<=60;i++){ 18 for(sum=0,j=i/2;j>0;j--){ 19 if(i%j==0) sum+=j; 20 } 21 if(sum>i) printf(" %d",i); 22 } 23 printf("\n"); 24 25 return 0; 26 }