for循环求1000以内的质数时,print与else对齐,结果出现不规律重复的质数,是为什么呢

for循环求1000以内的质数时,print与else对齐,结果出现不规律重复的质数,是为什么呢

img

img

img

把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()