//完數是指一個數恰好等於它的所有不同因子之和
//比如 6 = 3 + 2 + 1
//輸入 n(1 <= n <= 10000) 輸出不大於n的所有完數
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int sum;
int i, j;
int n;
vector<int> v;
for(i = 2; i <=10000; i++)//因爲n可以取到10000,爲了節省時間,先把1到10000之間的完數計算出來,存儲到向量中
{
sum = 1;
for(j = 2; j <= i / 2; j++)
{
if(i % j == 0)
sum += j;
}
if(sum == i)
v.push_back(i);
}
while(cin >> n)
{
cout << n << ": ";
for(i = 0; i < v.size(); i++)
{
if(v[i] <= n)
cout << v[i] << " ";
}
cout << endl;
}
return 0;
}
列出完數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.