1. 程式人生 > >PTA輸出指定範圍內的完數

PTA輸出指定範圍內的完數

 1 #include <stdio.h>
 2 
 3 int factorsum( int number );
 4 void PrintPN( int m, int n );
 5 
 6 int main()
 7 {
 8     int i, m, n;
 9 
10     scanf("%d %d", &m, &n);
11     if ( factorsum(m) == m ) printf("%d is a perfect number\n", m);
12     if ( factorsum(n) == n ) printf("
%d is a perfect number\n", n); 13 PrintPN(m, n); 14 15 return 0; 16 } 17 18 int factorsum(int number) 19 { 20 int sum=0; 21 if(number==1) 22 return 1; 23 for(int i=1;i<number;i++) 24 { 25 if(number%i==0) 26 { 27 sum+=i; 28 }
29 } 30 if(sum==number) 31 return sum; 32 } 33 34 void PrintPN(int m,int n) 35 { 36 int exist=0,isfactor=0; 37 for(int j=m;j<=n;j++) 38 { 39 if(factorsum(j)==j) 40 { 41 exist=1; 42 printf("%d =",j); 43 if(j==1
) 44 { 45 printf(" %d",j); 46 } 47 for(int k=1;k<j;k++) //此時j為完數 48 { 49 if(j%k==0) 50 { 51 if(k==1) 52 printf(" 1"); 53 else 54 printf(" + %d",k); 55 } 56 } 57 printf("\n"); 58 } 59 } 60 if(exist==0) 61 { 62 printf("No perfect number"); 63 } 64 }