首页 > 解决方案 > 为什么在提供偶数时 f 的值不会变为 1?

问题描述

p=[]
l=[]
v="run"
a=int(input("enter num or end: "))
while v!="end":
    l.append(int(a))
    a=input("enter num or end: ")
    v=a  
for a in l:
    f=0
    for j in range(2,a//2):
         if a%j == 0:
            f=1
            break
    if f==0:
        p.append(a)

在这里我输入数字,如果它是素数,那么我将它放入列表'p'并最后输出p。我不明白为什么当我输入如下图 4 中的偶数时第一个 if 语句不起作用,所以它应该将 f 的值更改为 1,这样它就不会进入列表“p”,但它不是。我对python很陌生,所以可能会犯愚蠢的错误。

在此处输入图像描述 左侧代码,右侧输出

标签: pythonif-statement

解决方案


问题是这range(2, 4//2)是一个空范围,因为 4//2 = 2,并且range(2, 2)包括小于 2 的每个整数,从 2 开始 - 也就是说,没有整数。

如果测试数大于 4,您不会遇到此问题,因为在这些情况下,您将始终在您正在测试的潜在因素范围内至少有 2 个。


推荐阅读