輸出1到某個整數範圍中所有的完數
阿新 • • 發佈:2019-01-30
定義一個數 n,要求輸出1~n 之間的所有的完數。
Sample Input:100
5000
Sample Output:100:6 28
5000:6 28 496
所謂“完數”是指一個數恰好等於它的所有不同因子之和。例如,6是完數,因為6=1+2+3。而24不是完數,因為24≠1+2+3+4+6+8+12=36。
思路:先判斷一個正整數的因子,若是因子,則求和,再將所求得的和與該正整數作比較,相等則是完數;
下面是用C++寫的程式,這裡用到了vector容器來存放輸入的數,用迭代器輸出。
完整程式碼:
#include #include #include #include using namespace std; int main() { int n; int sum; int a[100]; int j = 0; vector v1; while(cin >> n) { v1.push_back(n); } for(vector::iterator it=v1.begin(); it!=v1.end(); it++) { cout << *it << ": "; for(int m = 1; m <= *it; m++) //遍歷輸入的數 n 之前所有的數 { sum = 0; //判斷是否為因子 for(int i=1; i<=m/2; i++) { if(m % i == 0) { sum = sum + i; //是該數的因子,則求和 } } //判斷是否是完數 if(sum == m) { cout << m << " "; } } cout << endl; } return 0; }