题目来源:完数VS盈数_牛客题霸_牛客网 (nowcoder.com)
描述
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。
输入描述:
题目没有任何输入。
输出描述:
输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei为完数) G: g1 g2 g3 ......(gi为盈数) 其中两个数之间要有空格,行尾不加空格。
分析:
运用vector动态数组
参考:C++ vector 容器浅析 | 菜鸟教程 (runoob.com)
代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> e;
vector<int> g;
for(int num=2;num<=60;num++){
int res=0;
for(int i=1;i<num;i++){
if(num%i==0){
res+=i;
}
}
if(res==num) e.push_back(num);
else{
if(res>num) g.push_back(num);
}
}
cout<<"E:";
for(int i=0;i<e.size();i++){
cout<<" "<<e[i];
}
cout<<endl;
cout<<"G:";
for(int j=0;j<g.size();j++){
cout<<" "<<g[j];
}
}