1. 程式人生 > >窮舉法求1000內所有完數

窮舉法求1000內所有完數

題目: 

 一個數如果恰好等於它的因子之和,這個數就稱為 "完數",

  例如6=1+2+3。程式設計找出1000以內的所有完數。


思路:

窮舉法(簡直就是萬能的存在~)


程式碼:

package day5;

public class Perfectnumber {
public static void main(String[] args) {
System.out.println("1000以內所有的完數有:");
   for(int i=1;i<10000;i++){                                //遍歷1000內的所有數

     int t=0; 
     // 此for迴圈內,所有真因子直接相加。
     for(int j=1;j<=i/2;j++){                       //遍歷找到所有因子
       if(i%j==0){                          //如果等於零,則j是i的一個因子
         t=t+j;                               //所有因子相加
       }        
     }
     if(t==i){               //當此處的判斷if跳出第二個for迴圈時,不用判斷是否所有真       
       System.out.println(t);
     }      
           }
}

}


總結:完數(Perfect number),又稱完美數完備數,是一些特殊的自然數。它所

有的真因子(即除了自身以外的約數)的和(即因子函式),恰好等於它本身。如果

一個數恰好等於它的因子之和,則稱該數為“完數”

      窮舉法求完數,主要就是用兩個迴圈。外層迴圈遍歷可能為完數的數,內層迴圈

一個完數的所有的因子和。抓住完數的特徵,這個題就迎刃而解了。