aks算法 python 代码
时间: 2023-10-18 20:03:12 浏览: 60
AKS算法是一种用于判断一个数是否为素数的算法,它的全称是Agrawal-Kayal-Saxena算法。下面是一个使用Python实现AKS算法的代码示例:
```python
def aks_test(n):
if n == 2 or n == 3:
return True
if n % 2 == 0 or n % 3 == 0 or n == 1:
return False
r = 5
while r * r <= n:
if n % r == 0 or n % (r + 2) == 0:
return False
r += 6
return True
# 测试代码
num = int(input("请输入一个正整数:"))
if aks_test(num):
print(num, "是素数")
else:
print(num, "不是素数")
```
代码中的`aks_test`函数用于判断一个给定的数`n`是否为素数。首先,如果`n`等于2或3,则直接返回`True`,因为2和3都是素数。
然后,检查`n`是否能被2或3整除,或者等于1,如果是的话,则返回`False`,因为它们不是素数。
接下来,用一个循环从5开始,不断尝试将可能的质数因子应用到`n`上。在每次循环中,判断`n`是否能被`r`或`r+2`整除,如果是的话,则说明`n`不是素数,返回`False`。循环中的`r`加6的原因是因为所有大于等于5的素数都可以表示成6k±1的形式。
最后,如果循环结束后仍然没有找到能整除`n`的数,那么`n`就是素数,函数返回`True`。
在测试代码部分,首先要求用户输入一个正整数作为`num`的值,然后调用`aks_test`函数判断`num`是否是素数,并输出相应的结果。
请注意,这段代码只能用于判断较小的数是否为素数,对于非常大的数会有性能问题。在实际应用中,对于大数判断素数一般会使用更高效的算法,如Miller-Rabin算法或BPSW算法等。