这个代码总是出错,但我还不太明白怎么改正

img

img


编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。
所谓素数,是指除了1和自身之外没有其他因数的自然数。最小的素数是2

第三行代码出错,第三行代码里的a的类型是int,但是filter需要的类型是list。
你把第三行代码里的a改成[a]就行。

可以改成这样试试

import math

a = int(input("请输入一个大于2的自然数"))
b = [x for x in range(2, a)]
print(list(filter(lambda x: 0 not in [x % i for i in (2, int(math.sqrt(x)) + 1)], b)))

运行结果:

img