一、常规:
def isPrime(n):
if (n < 2):
return False
for factor in range(2,n):
if (n % factor == 0):
return False
return True
二、加速:
原理:如果n是合数,那么必然存在一个约数<sqrt(n),另一个约数>sqrt(n)。也就是说,如果在sqrt(n)左侧找不到约数,则n必然是质数。
def fasterIsPrime(n):
if (n < 2):
return False
if (n == 2):
return True
if (n % 2 == 0):
return False
maxFactor = round(n**0.5)
for factor in range(3,maxFactor+1,2):
if (n % factor == 0):
return False
return True