Python 判断素数算法及时间复杂度分析
以下是用Python判断n是否为素数的算法,并计算时间复杂度:
算法思路:
- 首先判断n是否小于2,若是,则返回False,因为小于2的数都不是素数。
- 然后使用循环从2开始逐个除以小于n的数,判断是否有余数为0,若有,则n不是素数,返回False;若没有,则n为素数,返回True。
代码实现:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
时间复杂度分析:
- 在for循环中,i从2逐个增加到n的平方根(int(n**0.5) + 1)。
- 在每次循环中,执行一次求余运算(%)和一次比较运算(==)。
- 因此,时间复杂度为O(sqrt(n)),其中sqrt表示平方根运算。
注意:此算法并非最优算法,还有更高效的素数判断算法,如埃拉托斯特尼筛法(Sieve of Eratosthenes),可以更快地判断素数。
原文地址: https://www.cveoy.top/t/topic/nnEB 著作权归作者所有。请勿转载和采集!