为什么得不出素数,而是全部的的数字

img

img


不清楚是素数函数出了问题还是高阶函数出了问题,希望有人可以给个详细的回答,谢谢

素数函数,逻辑不对啊,if判断有问题,你测试下,

函数中的0,1换个地方就对了:

def sushu(n):
    for i in range(2,n):
        if n%i==0:
            return 0
    else:
        return 1

    
list(filter(sushu,range(101,201)))
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

根据题意我给你优化了一下,用了sqrt函数:

import math
def sushu(n):
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            return 0
    else:
        return 1
    
ss = list(filter(sushu,range(101,201)))
print(ss)

如有帮助,请采纳!