アイジア

CTF, 情報セキュリティの学んだことメモ

ksnctf 20 G00913

ksnctf.sweetduet.info

first 10-digit prime found in consecutive digits of π

円周率の中で、最初の10桁の素数を見つけよ。

素数判定いろいろ - シンプルな判定と、素数の分布 - Qiita
上のリンクのsimple_prime_test.pyで素数判定処理がありますのでそれを拝借させていただきます。

import math

def is_prime(n):
    if n == 1: return False

    for k in range(2, int(math.sqrt(n)) + 1):
        if n % k == 0:
            return False

    return True

#円周率 とりあえず100桁
pi = "31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
x = 0

while(x < 90):
    num = int(pi[x:x+10])   #10桁の円周率を抽出
    if(is_prime(num)):
        print(num)
        break
    x += 1