python - 为什么在提供偶数时 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很陌生,所以可能会犯愚蠢的错误。
解决方案
问题是这range(2, 4//2)
是一个空范围,因为 4//2 = 2,并且range(2, 2)
包括小于 2 的每个整数,从 2 开始 - 也就是说,没有整数。
如果测试数大于 4,您不会遇到此问题,因为在这些情况下,您将始终在您正在测试的潜在因素范围内至少有 2 个。
推荐阅读
- python - 混合内容:“myUrl”处的页面是通过 HTTPS 加载的
- angular-cli - Remove code from build based on environment variable
- c# - 使用 xslt 和 c# 从中选择一个 xml 节点并根据其值添加更多节点
- php - 双引号注入
- java - 通过 JNI 线程安全地使用 GraphViz 库
- modelica - 将字符串数组作为输入传递给外部 C 函数
- php - 在 laravel 中使用 ajax 将数据保存到数据库而不重新加载
- python - 我不能在我的 Mule ESB 应用程序中使用 Pandas、Numpy、BeautifulSoup 和 PyMongo 的外部 Python 库
- java - 抓取所有数据值形成一个 web 表
- node.js - 如何在 AWS Lambda 中获取文件路径?