咨询热线
来源:贵港达内it教育机构 时间:2018/5/19 11:03:36
素数是指只能被1和它本身整除的正整数。在Python中,我们可以使用不同的方法来判定一个数是否为素数。本文将介绍几种常见的方法。
暴力枚举法是简单直接的判定素数的方法。对于一个大于1的正整数n,我们可以从2开始一直到n-1,逐个判断是否能够整除n。如果存在一个数能够整除n,那么n就不是素数;否则n就是素数。
Python代码如下:
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
其中,<表示小于号,%表示取余操作。
虽然暴力枚举法可以判定素数,但是对于大数来说,效率非常低下。因此,我们可以对其进行优化。具体来说,我们只需要枚举到n的平方根即可。
Python代码如下:
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
其中,math.sqrt表示求平方根,int表示取整。
埃氏筛法是一种筛选法,可以用来求解一定范围内的素数。具体来说,我们从2开始枚举,将能被2整除的数标记为非素数;然后从3开始,将能被3整除的数标记为非素数;依次类推,直到枚举到n的平方根为止。
Python代码如下:
def sieve(n):
is_prime = [True] * (n+1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n**0.5)+1):
if is_prime[i]:
for j in range(i*i, n+1, i):
is_prime[j] = False
return [i for i in range(n+1) if is_prime[i]]
其中,**表示幂运算,[]表示列表,for循环中的range函数可以设置步长。
通过以上三种方法,我们可以在Python中轻松判定素数。