我正在尝试使用Python快速确定数字是否为素数。
我有两个函数可以实现这个功能。它们都返回True或False。
isPrime1函数非常快地返回一个数字不是素数的False。例如,对于大数值而言非常快。但是,对于大素数,测试True的速度较慢。
isPrime2函数在返回素数的True时更快。但是,如果某个数字很大且不是素数,则需要花费很长时间才能返回一个值。第一个函数对此效果更好。
如何设计一种解决方案,可以快速返回一个大数值是否不是素数,并且对于大素数也可快速处理?
def isPrime1(number): #Works well with big numbers that are not prime
state = True
if number <= 0:
state = False
return state
else:
for i in range(2,number):
if number % i == 0:
state = False
break
return state
def isPrime2(number): #Works well with big numbers that are prime
d = 2
while d*d <= number:
while (number % d) == 0:
number //= d
d += 1
if number > 1:
return True
else:
return False`