第三行代码出错,第三行代码里的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)))
运行结果: