UVA 382 - Perfection 題目: 一個整數b如果可以被另一個整數a整除(在這裡a>b),我們稱b是a的一個因數。 Perfect Number是一個正整數並且等於其所有因數的和。 例如:6和28都是perfect number。因為6=1+2+3,28=1+2+4+7+14。 如果一個正整數不是perfect,那他就是deficient或者是 abundant,根據其所有因數的和是小於或大於這個數本身。因此,9是deficient因為1+3<9。而12是abundant因為1+2 +3+4+6>12。 請寫一個程式求出某一個數是perfect, deficient 或者abundant。 Input 有一連串(不會超過100個)的正整數n(1 <= n < 60000),n=0代表輸入結束。 Output 請參考 Sample Output。 數字部分佔5個字元長度,靠右對齊。與後方的敘述間空2個空白格。 Sample Input #1 15 28 6 56 60000 22 496 0 Sample Output #1 PERFECTION OUTPUT 15 DEFICIENT 28 PERFECT 6 PERFECT 56 ABUNDANT 60000 ABUNDANT 22 DEFICIENT 496 PERFECT END OF OUTPUT C++ code: ```c++= #include<bits/stdc++.h> using namespace std; string s[3] = {"DEFICIENT", "ABUNDANT", "PERFECT"}; int cmp(int n) { int sum = 1; for (int i = 2; i < n; ++i) { if (n % i == 0) { sum += i; } } if (sum < n) { return 0; } else if (sum > n) { return 1; } else { return 2; } } int main(){ //ios::sync_with_stdio(0);cin.tie(0); int n; cout << "PERFECTION OUTPUT" << endl; while (cin >> n) { if (n == 0) { cout << "END OF OUTPUT" << endl; break; } if (n == 1) { cout << setw(5) << right << n << " " << "DEFICIENT" << endl; continue; } int ans = cmp(n); cout << setw(5) << right << n << " " << s[ans] << endl; } } ```