列出完數

//完數是指一個數恰好等於它的所有不同因子之和
//比如 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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章