python题库 No.35 100以内的质数

质数(prime number)又称素数,有无限个。
质数的定义:在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2、3、5、7、11、13、17、19。
请编写程序以列表的形式输出100以内的质数。

实际答案:

list_prime = []
for i in range(2, 101):
  for j in range(2, i+1):
    if j >= i:
      list_prime.append(i)
    elif i % j == 0:
      break   
    else:
      continue
    
print(list_prime)

标准答案:
image
点评:
实际编写过程中,遇到漏报数字“2”的问题,

for i in range(2, 101):
  for j in range(2, i):
    if i % j == 0:
      break
    elif (j + 1) >= i:
      print(i)

原因在于for j in range(2, i):
当 i = 2 时,range(2, i) 就是 range(2, 2),这个范围是空的,所以内层循环根本不会执行,2 就被跳过了。

标准答案中,使用了for-else结构,这是python特有的结构。

for j in range(2, i):
    if i % j == 0:
        break      # 找到因子,不是质数
else:              # 注意:这个else属于for循环,不是if
    print(i)       # 循环正常结束(没找到因子),是质数

执行逻辑:

当循环因 break 退出时,else 块不会执行

当循环自然结束(所有元素遍历完)时,else 块会执行

posted @ 2025-12-25 15:53  点影成金  阅读(15)  评论(0)    收藏  举报