ou_fan的代码
Description |
输出1000以内的完数,并输出其因子。完数:一个数的因子之和正好等于这个数。比如6的因子是1,2,3,6=1+2+3。 |
Input |
无数据输入 |
Output |
输出所有完数及其因子。每个完数占一行,参见输出样例。 |
Sample Output |
6 its fators are:1,2,3 28 its fators are:1,2,4,7,14 496 its fators are:1,2,4,8,16,31,62,124,248 |
//ou_fan
#include<bits/stdc++.h>
using namespace std;
set<int>arr;
int main(){
//从1到1000枚举;
for (int n = 1;n <= 1000;n++) {
int first = true;
int sum = 0;
//找出因子放入set
for (int j = 1;j <= n;j++) {
if (n % j == 0&&n!=j) arr.insert(j);
}
//把所有因子相加
for (auto it = arr.begin();it != arr.end();it++) {
sum += *it;
}
//判断:如果因子和等于此数;
if (sum == n) {
for (auto it = arr.begin();it != arr.end();it++) {
if (first) {
first = false;
cout << n << " its fators are:";
}
else { cout << ','; }
cout << *it;
}
cout << endl;
}
arr.clear();
}
}
使用到了set容器的特点:
1.自动去重排序;