文章
52
粉丝
68
获赞
22
访问
11.5k
#include <bits/stdc++.h>
using namespace std;
bool isPerfectNumber(int num,vector<int>&a) {
vector<int>b;
if (num < 2) return false; // 完数至少是 6
int sum = 1; // 1 是所有数的真因子
b.push_back(1);
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
b.push_back(i);
if (i != num / i) { // 避免重复添加平方根
sum += num / i;
b.push_back(num/i);
}
}
}
sort(b.begin(),b.end());
a=b;
return sum == num;
}
int main(){
int n;
while(cin>>n){
for(int i=2;i<=n;i++){
vector<int>a;
if(isPerfectNumber(i,a)){
cout<<i<<" its fastors are ";
for(auto x:a)cout<<x<<' ';
cout<<endl;
}
}
}
}
判断如果是,那么一定存在一个成对的因子,假如这个因子就是整数且相同,那么我们就存储一个,也就是其中循环的判定,我们不需要存两个,但是因为我们...
登录后发布评论
暂无评论,来抢沙发