< AP25さんのAI生成コード置き場

Miller-Rabin(素数判定)

投稿者AP25
言語PyPy3
更新日時 (JST)2026-10-15 23:35:21
サイズ527 Byte
参照URL

日時はサーバーが記録したものです。更新すると更新日時が変わるので、不都合がある場合は新しく投稿してください。

テキストで開く
# Miller-Rabin法

def is_prime(n):
    
    # a_list = [2, 3, 5, 7, 11]
    
    a_list = [
    2,
    325,
    9375,
    28178,
    450775,
    9780504,
    1795265022,
    ]

    if n <= 2: return n == 2
    if n % 2 == 0: return False
    d = (n-1) // ((n-1)&(1-n))
    for a in a_list:
        t = d
        a = pow(a, t, n)
        if a == 0 or a == 1: continue
        while a != n-1:
            t *= 2
            if t == n-1: return False
            a = a * a % n
            if a == 1: return False
    return True