c203 - 13185 - DPA Numbers I
題目描述
題目要求判斷給定的正整數是完美數、虧數還是盈數。完美數等於其所有真因數的和(不包括自身)。虧數的真因數和小于自身,盈數的真因數和大于自身。
解題思路
對於每個輸入的數字 n,程式碼計算其所有小于 n/2 的因數,並計算這些因數的和。然後,程式碼將因數和與 n 進行比較,以確定 n 是完美數、虧數還是盈數。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
#include <math.h>
using namespace std;
int main(){
long long int n=0,sum=0,i=0;
int a=0;
cin >> a;
while(cin >> n){
for(i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(sum==n){
cout << "perfect" << endl;
}
else if(sum>n){
cout << "abundant" << endl;
}
else{
cout << "deficient" << endl;
}
n=0;sum=0;i=0;
}
}