2022.11.18 PM 06:00 by CBJ
來源 : https://zerojudge.tw/ShowProblem?problemid=d010 出題者 : sagit 標籤 : 數學 難易度 : 1
解題想法 : 對於一個輸入值n,只需要從1~n-1一個一個檢查是否為因數即可(運用取餘數方法),若是因數,則將ans+=因數,最後輸出ans即可 (注意 : 題目雖然沒有提到會有多筆輸入,但實際送出就會發現到,因此實作時要記得使用反覆輸入) (切記,是在1~n-1中找因數,不要因為太習慣而將for i設為從0開始!!!(會出現除以0的錯誤))
//C language
//solution link(含註解):
#include<stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int ans=0;
for(int i=1;i<n;i++){
if(n%i==0) ans+=i;
}
if(ans==n){
printf("完全數\n");
}
else{
printf("%s\n",(ans>n)?"盈數\n":"虧數\n");
}
}
return 0;
}

//C++ language
//solution link(含註解):
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int ans=0;
for(int i=1;i<n;i++){
if(n%i==0) ans+=i;
}
if(ans==n){
cout<<"完全數\n";
}
else{
cout<<((ans>n)?"盈數\n":"虧數\n");
}
}
return 0;
}

## Python language
## solution link(含註解):
from sys import stdin
for read in stdin:
n=int(read)
ans=0
for i in range(1,n):
if n%i==0: ans+=i
if ans>n: print("盈數")
elif ans<n: print("虧數")
elif ans==n: print("完全數")

發佈留言