1. 程式人生 > >d010:盈數、虧數和完全數

d010:盈數、虧數和完全數

定義 它的 number pre code 如果 題目 == names

題目:

對一個正整數N而言,將它除了本身以外所有的因子加起來的總和為S,如果S>N,則N為盈數,如果S<N,則N為虧數,而如果S=N,則N為完全數(Perfect Number)。例如10的因子有1、2、5、10,1 +2+5=8<10,因此10為虧數,而12的因子有1、2、3、4、6、12,1+2+3+4+6=16>12,因此12為盈數。至於6的因子有1、2、3、6,1+2+3=6,所以6是完全數(它也是第一個完全數)。
現在請你寫一個程序,輸入一個正整數N,然後印出它是盈數、虧數還是完全數。

所以,這題的思路是:定義s=0.

把這個數和所有小於它的數mod,是0的話s=s+i.

代碼:

 1 #include <iostream>
 2 using namespace std;
 3 int main(){
 4     int a,i=1;
 5     while(cin>>a){
 6         int s=0;
 7         for(i=1;i<a;i++){
 8             if(a%i==0) s+=i;
 9         }
10         if(s<i) cout<<"虧數"<<endl;
11         if(s==i) cout<<"完全數"<<endl;
12 if(s>i) cout<<"盈數"<<endl; 13 } 14 return 0; 15 }

d010:盈數、虧數和完全數