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(" "); 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了