miller-rabin素性测试算法python
时间: 2023-12-04 13:05:33 浏览: 178
Miller-Rabin素性测试算法是一种快速判断一个数是否为素数的方法。下面是一个简单的Python实现:
```python
import random
def is_prime(n, k=10):
# 如果n小于等于1,直接返回False
if n <= 1:
return False
# 如果n是小于3的整数,直接返回True
if n <= 3:
return True
# 计算r和d,使得n-1 = 2^r * d
r, d = 0, n - 1
while d % 2 == 0:
r += 1
d //= 2
# 进行k次测试
for _ in range(k):
a = random.randint(2, n - 2)
x = pow(a, d, n)
if x == 1 or x == n - 1:
continue
for _ in range(r - 1):
x = pow(x, 2, n)
if x == n - 1:
break
else:
return False
return True
```
这个算法的时间复杂度是 $O(k\log^3 n)$,其中 $k$ 是测试的次数,这个值一般取 $10$ 左右就足够了,如果需要更高的精度,可以适当增加 $k$ 的值。
阅读全文