题目:https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d?tpId=40&tqId=21351&tPage=2&rp=2&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking
参考:https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E6%95%B0/370913?fromtitle=%E5%AE%8C%E6%95%B0&fromid=10876772
这道题主要是概念,上百度百科查了一下完数的详细概念就一遍过了
代码
#include <cstdio>#include <vector>#include <cmath>using namespace std;vector<int> get_factor(int a){vector<int> res;for(int i = 1; i < a; i++){if(a % i == 0){res.push_back(i);/*while(a % i == 0){a /= i;}*/}}return res;}int judge(vector<int> v, int a){int sum = 0;for(int i = 0; i < v.size(); i++){sum += v[i];}if(a == sum) return 2;else if(a < sum) return 1;else return 0;}int main(){vector<int> E, G;for(int i = 2; i <= 60; i++){if(judge(get_factor(i), i) == 2) E.push_back(i);else if(judge(get_factor(i), i) == 1) G.push_back(i);}printf("E:");for(int i = 0; i < E.size(); i++){printf(" %d", E[i]);}printf("\nG:");for(int i = 0; i < G.size(); i++){printf(" %d", G[i]);}}
