首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的Prime Checker

python中的Prime Checker
EN

Stack Overflow用户
提问于 2019-07-04 19:53:04
回答 3查看 52关注 0票数 0

这是一个程序,它将接受用户想要的数字,并使用'mod‘(%)检查它是否是质数。

我已经弄明白了它的逻辑,比如使用range函数来限制它重复的次数,并使用mod来声明如果任何一个数字的余数为零(除了1和它自己),那么它一定是一个质数。

代码语言:javascript
复制
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),它会将结果显示为“This is primeThis is not prime”。对于其他一些数字,例如65,它有时会错误地将其标记为质数。

EN

回答 3

Stack Overflow用户

发布于 2019-07-04 19:56:02

只需最少的修复即可轻松获得正确的行为:

代码语言:javascript
复制
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的工作方式是,只有当else循环没有被break语句过早结束时,for块才会运行。使用它比只使用if-else更好,因为确实没有必要在循环的每一次遍历中都设置"This is prime“值。

票数 1
EN

Stack Overflow用户

发布于 2019-07-04 19:59:18

如果您想修复您的方法,您应该更改为=而不是+=

代码语言:javascript
复制
number = int(input("Please type in your number: "))

prime = ""
for a in range (2, number):
    if number % a == 0:
        prime = "This is not prime"
        break
    else:
        prime = "This is prime"
print (prime)


Please type in your number: 49
This is not prime
Please type in your number: 65
This is not prime
Please type in your number: 13
This is prime
票数 1
EN

Stack Overflow用户

发布于 2019-07-04 20:14:35

num = 20

如果num > 1:

对于范围(2,num)中的i: if (Num%i) == 0:

print(num,“不是质数”)

print(i,"times",num//i,"is",num)

break else: print(num,“是一个质数”)

else: print(num,“不是质数”)

输出20不是质数2乘以10等于20

19是一个质数

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56887376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档