1、试除法:
根据定义循环判断该数除以比他小的每个自然数(大于1),如果有能被他整除的就不是质数。
缺点:如果只用试除法,时间复杂度较大,为n
# 判断一个数是不是素数
# 算法1:时间复杂度较大,为n
def is_prime1(num):
'''循环遍历小于该数的所有整数,除了1和它本身之外,如果有其他数能被它整除,它就不是质数'''
if num <= 1:
return False
for i in range(2, num):
if num%i == 0:
return False
return True
print(is_prime1(64577))
2、试除法+因式分解常识
试除法的试除范围是2-n,根据因式分解常识,我们可以把试除的范围缩小到根号n,也就是代码中的 i*i <= n,限制了i 小于 根号n。
优点:时间复杂度较小,为根号n
# 算法2:时间复杂度较小,为根号n
def isPrime(n):
if n <= 1:
return False
i = 2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True
print(isPrime(64577))