- 题目描述:
-
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。
求出2到60之间所有“完数”和“盈数”。
- 输入:
-
题目没有任何输入。
- 输出:
-
输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。
- 样例输入:
- 样例输出:
#include <iostream> using namespace std; int main() { int i,j,m,n; int b[10000]; //ÕâÍêÈ«ÊÇÒòΪ¸ñʽҪÇó¶ø¶¨ÒåµÄÊý×é int a[10000]; int num=0; /* for (i=1;i<N;i++) { if (N%i==0) { num+=i; } } if (num==N) { cout<<"Yes"; } */ m=0; n=0; for (i=2;i<=60;i++) { for (j=1;j<i;j++) { if (i%j==0) { num+=j; } } if (num==i) { //cout<<i<<; b[m++]=i; } if (num>i) { a[n++]=i; } num=0; } cout<<"E:"<<" "; for (i=0;i<m;i++) { if (i!=0) { cout<<" "; } cout<<b[i]; } cout<<endl; cout<<"G:"<<" "; for (i=0;i<n;i++) { if (i!=0) { cout<<" "; } cout<<a[i]; } cout<<endl; return 1; } /************************************************************** Problem: 1060 User: Carvin Language: C++ Result: Accepted Time:0 ms Memory:1516 kb ****************************************************************/