请解释Python打印1到n素数的print_prime_1_n函数运行机制
代码功能与逐行解释
这段Python代码的作用是打印从1到n(包含n)的所有数中被判定为质数的数,当调用print_prime_1_n(10)时,会输出1、2、3、5、7。下面是逐行拆解:
函数定义
def print_prime_1_n(n):定义一个名为
print_prime_1_n的函数,参数n是要检查的数字上限。外层遍历循环
for i in range(1, n+1):遍历从1到
n的每一个数字i(range(1, n+1)是左闭右开区间,所以能包含n)。初始化质数标记
prime = True先默认当前数字
i是质数,用prime变量标记为True。内层检查循环
for j in range(2, i):遍历从2到
i-1的所有数字j,用来检查i是否能被这些数整除——如果能被其中任意一个数整除,i就不是质数。整除判定
if i % j == 0: prime = False break- 如果
i除以j的余数为0(即i能被j整除),说明i不是质数,把prime改成False。 - 执行
break跳出内层循环,不用再检查其他数字,因为已经确定i不是质数了。
- 如果
打印质数
if prime: print(i)如果遍历完所有
j后,prime仍然是True,说明i不能被2到i-1的任何数整除,就打印这个数。函数调用
print_prime_1_n(10)调用函数,传入参数10,即打印1到10之间被判定为质数的数。
注意:这段代码把1判定为质数,但严格来说1不是质数——因为质数的定义是大于1、只能被1和自身整除的自然数。如果要修正这个问题,可以把外层循环的起始值改成2,或者在打印前加一个
i > 1的判断。
内容的提问来源于stack exchange,提问作者Mohamad Samruk
相关产品推荐
相关产品推荐

