G00913
πの連続する桁で見つかった最初の10桁の素数を求める問題。
標準のmath.piだと15桁しか表示できない。
mpmathは任意精度演算ライブラリでmpmath.dpsで任意の桁数を指定できる。
素数判定の関数は以下を参考
https://qiita.com/hanaata/items/976ff9aa7bd64203a619
1000桁のπを文字列に変換する。左から10桁の値を素数判定しながら右にずらしていく。
素数が見つかったらbreakでfor文を終了する。
from mpmath import *
mpmath.dps = 100
# 素数判定
def is_prime(n):
if n == 1: return False
for k in range(2, int(mpmath.sqrt(n)) + 1):
if n % k == 0:
return False
return True
str_pi=str(pi)
for i in range(2,mpmath.dps-10):
if(is_prime(int(str_pi[i:i+10]))):
print(str_pi[i:i+10])
break
まとめ
ほしい関数は調べれば大体出てくる