牛客网———完数VS盈数
题目描述
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。
输入描述:
题目没有任何输入。
输出描述:
输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。
链接:https://www.nowcoder.com/questionTerminal/ccc3d1e78014486fb7eed3c50e05c99d 来源:牛客网 #include<stdio.h> #include<math.h> int judge(int n) { int i; int num=0; for(i=1;i<n;i++) { if(n%i==0) num+=i; } if(num==n) return 1; else if(num>n) return 2; else return 0; } int main() { int i,k; int a[60]; int r=0,t=59; for(i=2;i<=60;i++) { k=judge(i); if(k==1) a[r++]=i; if(k==2) a[t--]=i; } printf("E:"); for(i=0;i<r;i++) printf(" %d",a[i]); printf("\nG:"); for(i=59;i>t;i--) printf(" %d",a[i]); return 0; }