题意
给出一个数n,然后计算n的所有因字数之和 与 2*n 的大小关系
比2*n大 输出 ABUNDANT
比2*n小 输出 DEFICIENT
和2*n相等 输出 PERFECT
技巧
计算因子和 参见我写的一篇技巧文章
关于一个数的因子和
还有就是输出格式的技巧也要用到 输出格式的头文件 iomanip
代码
#include <iostream>
#include <iomanip>
using namespace std;
void trans(int n){
int sum=0;
for(int i=1;i*i<=n;i++){ //计算因子和
if(n%i==0 && n/i!=i){
sum+=(i+n/i);
}
if(n%i==0 && n/i== i){
sum+=i;
}
}
sum-=n;
if(sum<n) cout<<setw(5)<<n<<" DEFICIENT"<<endl;
if(sum==n) cout<<setw(5)<<n<<" PERFECT"<<endl;
if(sum>n) cout<<setw(5)<<n<<" ABUNDANT"<<endl;
}
int main()
{ int n,count=0,num[100];
while(cin>>n && n){
num[count] = n;
count++;
}
cout<<"PERFECTION OUTPUT"<<endl;
for(int i=0;i<count;i++){
trans(num[i]);
}
cout<<"END OF OUTPUT"<<endl;
return 0;
}
h a p p y c o d i n g
s e e n