硬算的話你會得到一個大到靠北的數字,也不是完全不行,但很耗時
預防萬一有人不知道什麼是完美數,完美數又稱完全數,如果某個數字的所有真因數的和(包含1, 但不包含自己),剛好等於該數字本身,那我們會稱呼這個數字為完美數。
題目給的公式 (2^(k-1))*(2^k - 1) 是用來計算完美數的公式,當 k 滿足特定條件時,代入這個公式就會得到完美數
所以只需要判斷 k 是否滿足條件即可,不要真的每個數字都代進去看看,更別真的做因數分解
這個條件就是 k 必須要是梅森質數
梅森質數是特殊的質數,若有一個質數 n ,同時 2^n-1 也是質數,那我們就會說 n 是梅森質數
例如 2 是質數,同時 2^2-1 = 3 也是質數,所以 2 就是梅森質數
把 2 這個梅森質數代進去題目給的公式,可得 (2^(2-1))*(2^2-1) = 6
6 的真因數為 1, 2, 3,總和等於 6 本身
所以當輸入的值為 2 時,確實可以得到一個完美數 6
所以只需要檢查題目給的數字是否是質數、是否是梅森質數即可,如果條件滿足,這時才需要真的把數字代入題目的公式
參考資料:
A000396 - OEIS (完美數)
A000043 - OEIS (梅森質數)