#include<cstdio> #include<vector> #include<stdlib.h> using namespace std; int Sum(int i){//定义一个求和函数,输入变量是i(即题目里规定的在2到60之间的数) int sum =0;//初始值sum为0,因为要录入第一个因子又要初始化 for (int j = 1; j < i; ++j){//不断地给定的i循环迭代 if(i%j==0){//因子满足的条件是整除 sum=sum+j;//因子求和 } } return sum;//返回求和的值 } int main(){ vector<int> Evec;//完数动态数组 vector<int> Gvec;//盈数动态数组 for (int i = 2; i <= 60; ++i){//循环迭代 if(i==Sum(i)){//完数的判定条件 Evec.push_back(i);//将这个完数推入数组 } else if(i<Sum(i)){//盈数判定条件 Gvec.push_back(i);//将这个盈数推入数组 } } printf("E:"); for (unsigned i = 0; i < Evec.size(); ++i){//循环打印完数 printf(" %d",Evec[i]); } printf("\n"); printf("G:"); for (unsigned i = 0; i < Gvec.size(); ++i){//循环打印盈数 printf(" %d",Gvec[i]); } printf("\n"); system("pause"); }