- 这是一道很好的算法题。。。
- 1.涉及推导式生成数据列表
- 2.涉及列表元素的判断、列表元素的删除
- 3.涉及列表的解包输出、涉及删除元素个数的计算
n = int(input())
# 用推导式求出整个数组的列表
lines = [i for i in range(2,n+1)]
# 循环遍历,每个元素
for i in range(2,n+1):
# 判断这个数是不是存在,不存在结束循环
if i not in lines:
continue
# # 若存在,则取出对应位置的索引,然后作为内存循环的下界,遍历删除整除的数
else:
j = lines.index(i)
for j in range(len(lines)-1,j,-1):
if lines[j] % i == 0:
lines.pop(j)
# 打印结果,用*解包。。。。。
print(*lines)
# 计算清0的个数。。。。
print(n-1-len(lines))