关于python打印0~500内的所有质数,求解答

今天遇到一个问题是关于python打印0~500内的所有质数的题,然后我用如下代码打印,发现在测试时打印0~10内的质数都满足不了,但是我感觉逻辑上好像没啥错误呀。求帮助~

def printzs(n):
    if n==1 or n==0:
        return False
    for i in range(2,n-1):
        if n%i==0:
            return False
        else:
            return n
zs=filter(printzs,[x for x in range(0,10)])
print zs

图片说明

2个回答

else的缩进错了

def printzs(n):
    if n==1 or n==0:
        return False
    for i in range(2,n-1):
        if n%i==0:
            return False
    else:
        return True
zs=filter(printzs,[x for x in range(0,10)])
print zs

[2, 3, 5, 7]

按照你的写法,就变成了只要有一个不能整除就算素数了,而实际上是都不能整除才是,所以else不是if的else而是for的。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复BigTreeL: 麻烦采纳一下,谢谢
接近 2 年之前 回复
BigTreeL
BigTreeL 哦哦,明白了,非常感谢!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问