同題:UVa 13185 – DPA Numbers I
一個整數 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。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入的第一列有一個正整數t代表以下有幾筆測資。(1 <= T <= 500) 每筆測資一列,有一個正整數 N(2 <= N <= 1000) | 對每筆測資輸出一列,輸出 N 是 Perfect、Deficient、或者 Abundant。 |
10 5 6 16 18 21 28 29 30 40 43 | deficient perfect deficient abundant deficient perfect deficient abundant abundant deficient |
解題思路
使用 For迴圈 判斷每一個數字的因數,如果 N 除以目前迴圈跑到的數字 (i) 之餘數等於0,i 就是N的因數。進行加總之後判斷是小於、等於、還是大於。
範例程式碼-ZeroJudge C203: DPA Numbers I
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
for (int i = 0; i<T; i++)
{
int N;
cin >> N;
int count = 0;
for (int j = 1; j<N; j++)
{
if (N % j == 0)
{
count += j;
}
}
if (count == N) cout << "perfect\n";
else if (count > N) cout << "abundant\n";
else cout << "deficient\n";
}
}
//ZeroJudge C203
//Dr. SeanXD