思路是从 1 到 n 挨个处理,保存其所有因数(除了自身),最后所有因数和与自身比较,如果相等则为完数。
#include<bits/stdc++.h> using namespace std; void wanshu(int &n){ vector<int> yinshu; //用于储存因数 int sum=0; for(int i=1;i<=n/2;i++){ //n/2保证了自身不会被算入因数 if(n/i==(double)n/(double)i){ //判断是不是因数 yinshu.push_back(i); } } for(vector<int>::iterator it=yinshu.begin();it!=yinshu.end();it++){ sum = sum + *it; } if(sum==n){ cout << n << " its factors are "; for(vector<int>::iterator it=yinshu.begin();it!=yinshu.end();it++){ if(it+1==yinshu.end()){ cout << *it << endl; } else{ cout << *it << " "; } } } } int main(){ int n; cin >> n; for(int i=1;i<=n;i++){ wanshu(i); } return 0; }
0.0分
0 人评分
点我有惊喜!你懂得!浏览:1224 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1285 |
妹子杀手的故事 (C语言代码)浏览:691 |
求圆的面积 (C语言代码)浏览:1271 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:465 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:592 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:916 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1433 |
DNA (C语言代码)浏览:540 |