【概念】
质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。
这里以Python代码为例,最简单的一种想法,按照概念:
def is_prime(num):
if n == 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
这种方法写起来很简单,然而时间效率过低,再看下面的代码:
from math import sqrt
def is_prime(num):
if num == 1:
return False
for i in range(2, int(sqrt(num) + 1)):
if num % i == 0:
return False
return True
这里通过sqrt()
函数减少了开方级的计算量。
再看下面代码:
from math import sqrt
def is_prime(num):
if num > 1:
if num == 2:
return True
if num % 2 == 0:
return False
for i in range(3, int(sqrt(num)+1), 2):
if num%i == 0:
return False
return True
return False
这一次代码看起来有些多,但,计算量是原来的基础上几乎又减少了一半。
if number % 2 == 0:
将2以及所有合数因子给排除掉了
range(3, int(sqrt(num)+1, 2):
中,直接从3起步,步长为2。range()
函数产生的序列为[3, 5, 7, 9, ...]
,比原来产生的少了合数的部分。