d010: 盈數、虧數和完全數

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("完全數")

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *