def isPrime(self,n):
if (n & 1) == 0 or (n > 5 and n % 5 == 0):
return False
maxCheck = math.sqrt(n)
if maxCheck == math.floor(maxCheck):
return False
p = self.firstPrime
while p != None:
if p.n > maxCheck:
return True
if n % p.n == 0:
return False
p = p.nextPrime
divisor = self.lastPrime.n + 2
while divisor <= maxCheck:
if not self.isPrime(divisor):
divisor += 2
continue
self.lastPrime = self.lastPrime.setNext(divisor)
if divisor > maxCheck:
return True
if n % divisor == 0:
return False
divisor += 2
return True
评论列表
文章目录