POJ1528(数论)

解题思路:这道题就是让求一个整数n除自身外的所有因子之和,然后与 n 相比,如果小于则输出 DEFICIENT,等于则输出  PERFECT;大于则输出 ABUNDANT。本题关键就是注意输出格式,从题意 Format counts: the echoed integers should be right justified within the first 5 spaces of the output line, followed by two blank spaces, followed by the description of the integer. 整数 n 输出占 5 空格且向右对齐,然后再输出两个空格,接着就是对 n 的描述。

注意:当 n=1 时,因为是除自身以外的因数之和,即 sum=0,应输出 DEFICIENT。需要对此种情况做特殊考虑。

View Code
 1 #include <iostream>
 2 #include <cstdio>
 3  using  namespace std;
 4 
 5  int main()
 6 {
 7      int i,n;
 8     printf( " PERFECTION OUTPUT\n ");
 9      while(scanf( " %d ",&n))
10     {
11          int sum= 1;
12          if(n== 0) { printf( " END OF OUTPUT\n ");  break; }
13          if(n== 1) { printf( " %5d  DEFICIENT\n ",n);  continue;}
14          for(i= 2;i<n;i++)
15              if(n%i== 0) sum+=i;
16          if(sum<n) printf( " %5d  DEFICIENT\n ",n);
17          else  if(sum==n) printf( " %5d  PERFECT\n ",n);
18          else printf( " %5d  ABUNDANT\n ",n);
19     }
20      return  0;
21 }




 

你可能感兴趣的:(poj)