python-3.x - python中的Prime Checker
问题描述
这是一个程序,它将接收用户所需的数字并使用“mod”(%)检查它是否是素数。
我已经弄清楚了它的逻辑,因为使用 range 函数来限制它重复的次数,并使用 mod 来说明任何数字是否有余数为零(除了一个和它本身),那么它必须是一个素数。
number = int(input("Please type in your number"))
prime = ""
for a in range (2, number):
if number % a == 0:
prime = prime + "This is not prime"
break
else:
prime = prime + "This is prime"
print (prime)
最大的问题之一是对于某些数字(例如 49),它会将结果显示为“这是素数这是素数这是素数这是素数这是素数这不是素数”。对于其他一些数字,例如 65,它有时会错误地将其标记为质数。
解决方案
只需最少的修复即可轻松获得正确的行为:
number = int(input("Please type in your number: "))
for a in range(2, number):
if number % a == 0:
prime = "This is not prime"
break
else:
prime = "This is prime"
print(prime)
只有当循环没有被语句提前结束时for-else
,块才会运行。使用 this 比使用 更好,因为确实不需要在循环的每一次传递中设置“This is prime”值。else
for
break
if-else
推荐阅读
- python - Python 我可以在 jupyter notebook 之外呈现散景绘图吗?
- javascript - 在 JavaScript 中循环遍历 JSON 嵌套数组
- c++ - 如何在我的 SDL2_mixer mingw 应用程序中包含所有 DLL?
- javascript - 如何使用 jQuery 只删除表中的一行附加信息?
- javascript - 在 Formik 中使用 CheckboxTree
- android - 使用 Dagger 跨两个/或多个片段和一个活动共享 ViewModel
- postgresql - 如何添加约束以防止添加带孔的多边形
- java - 是否可以在 Spring Boot 应用程序中使用带有冗余的 HashiCorp Vault?
- javascript - 解析不同对象数组中日期的函数
- android - Ionic 4 弹跳效果