Python:n番目のマーニソン数を探す
2091 ワード
n番目のマーニソン数を探します.
古典的なプログラム設計の問題:n番目のマーニソン数を探します.Pは素数であり、Mも素数であり、式M=2*P−1を満たすものをMという.例えば、P=5、M=2 P-1=31、5、31は素数であるため、31はマーニソン数である.**
入力フォーマット:プロンプトに従ってinput()関数で入力
出力フォーマット:intタイプ
入力サンプル:4出力サンプル:127
古典的なプログラム設計の問題:n番目のマーニソン数を探します.Pは素数であり、Mも素数であり、式M=2*P−1を満たすものをMという.例えば、P=5、M=2 P-1=31、5、31は素数であるため、31はマーニソン数である.**
入力フォーマット:プロンプトに従ってinput()関数で入力
出力フォーマット:intタイプ
入力サンプル:4出力サンプル:127
import math
def isPrime(n):
if n <= 1:
return 0
i = 2
while i*i <= n:
if n % i == 0:
return 0
i += 1
return 1
def monisen(No_monisen):
counter_monisen = 0
P_num = 1
while counter_monisen != No_monisen :
P_num = P_num+1
P_isPrime = isPrime(P_num)
if(P_isPrime == 1):
M_num= math.pow(2,P_num) - 1
M_num = int(M_num)
M_isPrime = isPrime(M_num)
if(M_isPrime == 1):
if ( counter_monisen+1 ==No_monisen):
return(M_num)
counter_monisen += 1
print(monisen(int(input())))