使用python给出完整运行代码
时间: 2024-11-22 11:47:05 浏览: 15
当然可以。以下是使用Python分别实现费马小定理和米勒-拉宾素数检测算法的例子:
**1. 费马小定理素数判定(仅能作为辅助工具,不能作为确定素数的唯一手段)**
```python
import math
def fermat_test(n, a):
if n == 1 or n == 4: # 特殊情况处理
return False
if pow(a, n - 1, n) != 1: # 如果不满足费马小定理,n不是素数
return False
for i in range(2, int(math.log2(n))): # 对大部分a进行检查
if pow(a, 2 ** i, n) != n - 1:
return False
return True
# 示例
n = 12345678901234567890123456789012345678901
a = 2 # 随机选取一个a
print(f"{n}是素数(费马小定理检验): {fermat_test(n, a)}")
```
**2. 米勒-拉宾素数判定**
```python
from random import randint
def miller_rabin(n, k=5): # 默认5次测试
if n <= 1:
return False
elif n <= 3:
return True
r, s = 0, n - 1
while s % 2 == 0:
r += 1
s //= 2
for _ in range(k):
a = randint(2, n - 2)
x = pow(a, s, 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
# 示例
n = 12345678901234567890123456789012345678901
print(f"{n}是素数(米勒-拉宾检验): {miller_rabin(n)}")
```
阅读全文