如何解决有没有一种快速有效的方法来检查python中的数字是否为质数10 ^ 18位
我一直在使用此代码检查数字是否为质数:
def pcheck(number):
if number < 2:
k = "NO"
# theres no prime number less than 2
else:
i = 2
factors = []
while i * i <= number:
if number % i:
i += 1
else:
number //= i
factors.append(i)
if number > 1:
factors.append(n)
# get the factors of the number,a prime number will only have 1 factor,not including 1
if len(factors) == 1:
k = "YES"
else:
k = "NO"
return k
n = int(input())
print(pcheck(n))
但是即使进行了修改,它仍将难以处理具有18位数字的数字,这对我来说很麻烦,因为在这种情况下我无法使用它。我听说过,但是rabin miller测试,但是从未能够在我的代码中实现它。有没有更有效的方法来检查大量的素数,但仍然尽可能快?
解决方法
有很多方法可以改善此功能。首先,您只需要检查直到number
的平方根即可确定您是否会发现任何有意义的因素。而且,一旦找到一个因素,就可以立即终止该功能(不必继续搜索)。
但是,一般而言,没有快速的方法可以做到这一点。这是素数的美。要知道大量是否为素数需要花费大量的计算时间。查找大量的素因还需要大量的计算时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。