Pythonでデータを遊ぶ(一)

826 ワード

n番目のマーニソン数を探して
コードのフォーマットは次のとおりです.
def prime(num):
...
def monisen(no):
… …
return xxx
print(monisen(int(input()))#ここでは自分で入力する必要はありません.このような文を書くだけで、主にmonisen()関数(4点)を完成します.
古典的なプログラム設計の問題: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 prime(num):
	l1 = [2]
	for i in range(3, int(math.sqrt(num)+1), 2):
		if num % i ==0:
			return False
	return num

def monisen(no):
	l2 = [2]
	a = 3
	while 1 :
		P = prime(a)
		if P == False:
			a = a+2
			continue
		M = 2**P-1
		if prime(M) == False:
			a = a+2
		else:
			l2.append(M)
			a+=2
		if len(l2) == no:
			break
	return l2[-1]


print(monisen(int(input(""))))