for循环求1000以内的质数时,print与else对齐,结果出现不规律重复的质数,是为什么呢
把print(s)缩进到和s=str(x)+'\n'一列
不然下次跳过的时候,还是会执行print(s),导致再打印一遍上次找到的素数
print和s=str(x)+'\n'对齐就好啦
缩进有问题:
for x in range(2,999):
for i in range(2,x):
if x%i==0:
break
else:
s = str(x)
print(s)
一行代码也能搞定:
print('\n'.join(map(str,filter(lambda n:0 if n<2 else not any(map(lambda i:not n%i,range(2,n))), range(1000)))))
# coding=utf-8
# TODO 鸟欲高飞,必先展翅
# TODO 向前的人 :Jhon
for x in range(2,999):
for i in range(2,x):
if x%i==0:
break
else:
s=str(x)+'\n'
print(s)
# todo 如果print和else对齐相当于每次执行完 if~else判断后都要 执行print()
如果print和else对齐相当于每次执行完 if~else判断后都要 执行print()