d010:盈数、亏数和完全数
题目:
对一个正整数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 }