切換
舊版
前往
大廳
主題

ZeroJudge - e653: 10490 - Mr. Azad and his Son!!!!! 解題心得

Not In My Back Yard | 2020-02-20 00:01:00 | 巴幣 2 | 人氣 153

題目連結:


題目大意:
輸入有多列,每列給定一正整數 k (1 < k ≦ 31,k = 0 時代表輸入結束)。

請判斷 p = (2 ^ (k - 1)) × (2 ^ k - 1),p 是否為完美數?如果 p 是完美數,則輸出「Perfect: p!」,其中的「p」請代入上述的值;如果 p 並非完美數,而 k 是質數,則輸出「Given number is prime. But, NO perfect number is available.」;如果 p 非完美數且 k 也非質數,則輸出「Given number is NOT prime! NO perfect number is available."」。



範例輸入:
2
3
6
0


範例輸出:
Perfect: 6!
Perfect: 28!
Given number is NOT prime! NO perfect number is available.


解題思維:
由於每一個梅森質數(Mersenne Prime,形為 2 ^ n - 1 的質數,其中 n 為質數)對應於一個完美數(見維基百科上的證明即可)。

因此,直接判斷 2 ^ k - 1 是否為質數,即可知道 p 是否為完美數。然後依據情況判斷輸出內容即可完成要求。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作