讲解Python写一判素数的函数的攻略如下:
1. 确定素数的定义
在写判断素数的函数之前,我们需要先了解什么是素数。素数是只能被1和自身整除的自然数,比如2、3、5、7、11等等。那么,我们要写的“判断素数”的函数,其实就是判断一个数是否为素数。
2. 根据定义编写代码
根据定义,只需要让该数从2开始到该数的平方根取整(因为若a和b是正整数且a X b = n(n>=2),那么a和b中至少有一个数是<= n开方 的),逐一判断该数是否能被这些数整除,如果不能,那么它是一个素数,反之,它不是一个素数。
2.1 首先,我们可以这样写:
import math
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
上面的代码首先检查 n 是否小于等于 1,如果是,那么 n 不是素数,直接返回False。否则,我们从 2 开始,逐一判断 n 能否被 2 至 n 的平方根取整中的某一个数整除。如果能,那么 n 不是素数,返回False,否则,n 就是素数,返回True。
2.2 更进一步考虑性能的优化
上面的代码在一些情况下可能会效率比较低,因为在每次循环比较中,每个数都被判断了一遍。例如,当判断 101 是否为素数时,其实判断到 10 就可以停止了,因为 101 被 11 整除。而上面的代码会一直循环到最后,这样无疑会浪费很多时间。那么,我们可以做一些优化,让代码效率更高一些。比如,当我们发现一个数能被某个1至本身平方根之间的数整除时,直接返回False,停止循环。
import math
def is_prime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
i = 3
while i <= int(math.sqrt(n)):
if n % i == 0:
return False
i += 2
return True
如果 n = 2,返回True,因为它是最小的素数;如果 n 能被 2 整除,说明它不是素数,返回 False;如果 n 除以从 3 开始的每个奇数都不能整除,直到达到 n 的平方根,那么 n 就是素数,返回 True。
3. 总结
综上所述,判断素数的基本思路是从 2 开始,逐个检查该数能否被能整除的数整除。如果能,那么该数不是素数,否则,该数就是素数。在代码的实现中,我们还需要处理一些特殊情况,例如当 n 为 0 或 1 时,需要直接返回 False,否则会影响代码的正确性,影响运行效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python写一判素数的函数 - Python技术站