素数的定义:如果x是大于1的自然数,并且只被1和它自身整除,那么x就是素数。
试除法(Naive Approach)
试除法是最基本的素数检测方法,它通过遍历从2到n的所有整数来检查一个数n是否为素数。如果n能被2到n-1之间的任何整数整除,那么n就不是素数。这种方法的效率较低,特别是对于大数,因为它需要进行大量的除法运算。
def is_prime_naive(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
优化试除法(Square Root Limit)
优化试除法改进了试除法,它基于这样一个事实:如果一个数n不是素数,它必定有一个因子不大于它的平方根。因此,我们只需要检查到n的平方根即可。这种方法显著减少了检查的因数数量,从而提高了效率。
def is_prime_optimized(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
在这个优化版本中,我们首先检查n是否能被2或3整除,然后从5开始,每次增加6(即检查6k ± 1形式的数),因为除了2和3之外的所有素数都是6k ± 1的形式