PTA——完全数

PTA

7-45 找完数

网友“云上明月”的程序:

 1 #include<stdio.h>
 2 int isPerfect(int num);
 3 
 4 int main() {
 5     int i,j,m,n,exist=0;
 6     int maxFactor;
 7     scanf("%d%d",&m,&n);
 8     for(i=m; i<=n; i++) {
 9         maxFactor = isPerfect(i);
10         if(maxFactor) {
11             exist = 1;
12             printf("%d=",i);
13             for(j=1; j<i; j++) {
14                 if(i%j==0) {
15                     printf("%d",j);
16                     if(j<maxFactor) printf("+");
17                     else printf("\n");
18                 }
19             }
20         }
21     }
22     if(!exist) printf("None");
23     return 0;
24 }
25 
26 int isPerfect(int num) {
27     int i,factorSum=0,maxFactor=0,isPerfect=0;
28     for(i=1; i<num; i++) {
29         if(num%i==0) {
30             factorSum += i;
31             maxFactor = i;
32         }
33     }
34     if(factorSum == num) {
35         isPerfect=1;
36     }
37     return isPerfect*maxFactor;
38 }

我的部分程序:

int isPerfect(int num){
    int i,sum=0,max=0;
    for(i=1;i<num;i++){
        if(num%i==0){
            sum+=i;    
            max=i;
        }
    }
    if(sum==num){
        return max;
    }
}

差距:

1、变量命名简单,区分度不强

2、没有定义标识是否完全数的变量,这样当要判断的数不是完全数时就不能返回0了

猜你喜欢

转载自www.cnblogs.com/cxc1357/p/10755083.html