如何利用Python高效判断一个大数是否为质数?能否提供具体的代码实现?
时间: 2024-11-01 16:20:14 浏览: 12
在编程中,判断一个大数是否为质数是一个常见的算法问题。为了提高判断的效率,我们可以采用一些优化算法,例如Miller-Rabin质数测试或AKS素性测试。然而,对于大多数应用场景,Miller-Rabin测试因其相对高效而被广泛应用。以下是使用Miller-Rabin测试算法的Python代码示例,该算法的效率较高,尤其适用于较大数字的质数判断:
参考资源链接:[python求质数的3种方法](https://wenku.csdn.net/doc/6401ac4dcce7214c316eb5bd?spm=1055.2569.3001.10343)
import random
def miller_rabin_test(n, k=5):
if n == 2 or n == 3:
return True
if n <= 1 or n % 2 == 0:
return False
# 写n-1为2^r * d
r, d = 0, n - 1
while d % 2 == 0:
r += 1
d //= 2
# 使用Miller-Rabin测试k次
for _ in range(k):
a = random.randint(2, n - 2)
x = pow(a, d, n) # 快速幂计算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
# 代码使用示例:
n = int(input(
参考资源链接:[python求质数的3种方法](https://wenku.csdn.net/doc/6401ac4dcce7214c316eb5bd?spm=1055.2569.3001.10343)
阅读全文