首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python质数检查的困难

python质数检查的困难
EN

Stack Overflow用户
提问于 2012-10-18 06:12:05
回答 1查看 304关注 0票数 4

我一直在尝试让这段代码返回2到49之间的质数作为输入数字,但它所做的只是将大多数数字作为质数返回,即使它们不是……在这个练习中,我得到的是3,5和7是质数,所以忽略这一点……

代码语言:javascript
复制
def prime(a):
if a < 2: return False
if a % 2 == 0: return False
if a == 3 or a == 5 or a == 7: return True
for n in range(3,int(a ** 0.5) + 1): 
    if a % n == 0: return False
    if a % n != 0: return True

a = input("Enter a number between 1 and 49: ")

if prime(a) is False:
    print a, " is not a prime number"

if prime(a) is True:
    print a, " is a prime number"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-18 06:14:26

代码语言:javascript
复制
for n in range(3,int(a ** 0.5) + 1): 
    if a % n == 0: return False
    if a % n != 0: return True  # This if condition is not needed

你不需要第二个if条件。否则,当该数字不能被n的当前值整除时,它将立即返回。但你不会想这样的。如果当前的n不能除以你的数字,你需要检查下一个值。

因此,只需删除if,并在循环结束后添加一个return True

所以,你的prime() 应该是这样的:-

代码语言:javascript
复制
def prime(a):
    if a < 2: return False
    if a % 2 == 0: return False
    if a == 3 or a == 5 or a == 7: return True
    for n in range(3,int(a ** 0.5) + 1): 
        if a % n == 0: return False

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

https://stackoverflow.com/questions/12944228

复制
相关文章

相似问题

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