素数
又称质数(Prime number)。指在正整数中,除了1和该数自身外,无法被其他数整除的数。
方法1 (
O
(
n
)
O(n)
O(n))
从2开始寻找,直到
n
?
1
n-1
n?1。如果没有找到可以整除这个数的数,那么这个数是素数。
def isPrime(n):
for k in range(2,n):
if n%k ==0:
return False
return True
方法2(
O
(
n
)
O(\sqrt{n})
O(n
?))
从2开始寻找,直到
i
n
t
(
s
q
r
t
(
n
)
)
+
1
int(sqrt(n))+1
int(sqrt(n))+1。如果没有找到可以整除这个数的数,那么这个数是素数。
def isPrime(n):
for k in range(2,int(n**0.5)+1):
if n%k ==0:
return False
return True
方法3(略小于
O
(
n
)
O(\sqrt{n})
O(n
?))
素数除了2,首先不能是偶数。再判断其是否能被某一奇数整除。
def isPrime(n):
if n==2 or n==3:
return True
if n%2==0:
return False
for k in range(3,int(n**0.5)+1,2):
if n%k==0:
return False
return True
方法4(远小于
O
(
n
)
O(\sqrt{n})
O(n
?))
在大于等于5的正整数中,素数一定是出现在6的倍数的左右两边(其中一边或两边都是)。同时,出现在6的倍数的两边的数是可以被素数整除。
def isPrime(n):
if n <=3 and n >1:
return True
if n%6 != 1 and n%6!=5:
return False
for k in range(5,int(n**0.5)+1,6):
if n%k==0 or n%(k+2)==0:
return False
return True
如有问题或建议欢迎私信。 严禁私自转载,侵权必究。 参考: [1] 判断一个数是否为质数(素数)的4种方法 [CSDN]
|