求解:一個數如果恰好等於它的因子之和,這個數就稱為“完數”


 1  /*
 2      題目:一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程
 3     找出1000以內的所有完數。
 4    */
 5 #include <stdio.h>
 6 
 7  int main()
 8 {
 9      int tmp= 0,s,j,elem[ 10],k= 0;
10 
11      for(tmp= 0; tmp< 10; tmp++)
12     {
13         elem[tmp]= 0;
14     }
15 
16      for(tmp= 2; tmp< 1000; tmp++) // 經典10     0例里從2開始的。
17      {
18          // n=-1;
19          s=tmp;k= 0;
20          for(j= 1; j<=tmp; j++)
21         {
22              // if(s==0)
23                //    break;
24 
25              if((tmp%j)== 0)
26             {
27                  // n++;
28                  s-=j;
29                 elem[k++] = j;
30                  // printf("Q");
31              }
32         }
33 
34          if(s== 0)
35         {
36             printf( " %d is a wanshu: ",tmp);
37             j= 0;
38              while(j<k)
39             {
40                 printf( " %d, ",elem[j]);
41                 elem[j]= 0;
42                 j++;
43                  // printf("Q");
44              }
45             printf( " \n ");
46         }
47         printf( " %d\n ",tmp);
48         system( " pause ");
49         //  printf("\n\n");
50      }
51 
52      return  0;
53 }

 出了一個問題,怎么會從59變到30的:

 

//int elem[10];//正確

 int main()
 {
     int tmp=0,s,j,k=0,elem[10];//錯誤

     //static int elem[10]; //正確

 

I don't know why ?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM