首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-素数检查器-素数的乘积

Python-素数检查器-素数的乘积
EN

Stack Overflow用户
提问于 2015-05-19 04:43:30
回答 3查看 290关注 0票数 1

我编写了以下代码来检查数字是否为质数。虽然有更有效的方法来做到这一点,但我确实注意到,虽然这种方法适用于最大的质数,但它对质数的每个乘积都是无效的。因此,虽然它正确地将13和17识别为质数,但它也将91 (13×7)识别为质数。你知道为什么吗?

代码语言:javascript
复制
def checkifprime(numtocheck):
    for x in range(2,numtocheck):
        if(numtocheck % x == 0):
            return False
        return True

answer = checkifprime(91)
print (answer)
EN

回答 3

Stack Overflow用户

发布于 2015-05-19 04:46:40

return True缩进过多;它位于循环内部,导致函数在第一次迭代时退出,所以您的函数实际上只检查一个数字是否为奇数。

代码语言:javascript
复制
def checkifprime(numtocheck):
    for x in range(2, numtocheck):
        if numtocheck % x == 0:
            return False
    return True
票数 5
EN

Stack Overflow用户

发布于 2015-05-19 04:47:28

你的程序不会比第一次迭代走得更远。你实际上拥有的是一个奇偶性检查器。程序总是在循环的第一次迭代中返回。您返回True太早了。

票数 2
EN

Stack Overflow用户

发布于 2015-05-19 04:48:40

return True语句没有正确缩进--您将它放在了for循环中。因此,循环以2开头,如果数字是奇数,则不进入if,然后返回True。您应该将此语句放在 for循环之后。只有在循环结束后,如果你没有找到合适的除数,你才能返回这个数是一个质数:

代码语言:javascript
复制
def checkifprime(numtocheck):
    for x in range(2,numtocheck):
        if(numtocheck % x == 0):
            return False
    return True # Note the indendation
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30312487

复制
相关文章

相似问题

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