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