結果

問題 No.308 素数は通れません
コンテスト
ユーザー matsu7874
提出日時 2015-12-28 02:39:09
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
RE  
実行時間 -
コード長 666 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 444 ms
コンパイル使用メモリ 20,700 KB
実行使用メモリ 20,580 KB
最終ジャッジ日時 2026-04-07 16:03:04
合計ジャッジ時間 27,031 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 107
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def miller_rabin_test(n):
    if n == 2:
        return True
    if n < 2 or n & 1 == 0:
        return False
    d = (n - 1) >> 1
    while d & 1 == 0:
        d >>= 1
    for a in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]:
        t = d
        y = pow(a, t, n)
        while t != n - 1 and y != 1 and y != n - 1:
            y = pow(y, 2, n)
            t <<= 1
        if y != n - 1 and t & 1 == 0:
            return False
    return True


N = int(input())
i=int(input())
if N <= 26:
	print([0,0,0,0,3,0,5,0,7,7,7,0,11,0,13,7,7,0,8,0,19,19,7,0,23,23][i])
else:
    if N % 8 == 1 and miller_rabin_test(N - 8):
        print(14)
    else:
        print(8)
0