1069745273


私信TA

用户名:1069745273

访问量:5354

签 名:

Just do IT.

等  级
排  名 262
经  验 5714
参赛次数 3
文章发表 166
年  龄 0
在职情况 待业
学  校
专  业 计算机科学与技术

  自我简介:

思路是从 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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区