1013 数素数 python

1013 数素数 (20 分)

令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

碰到跟素数相关的题就懵逼

代码是BTboay的

​

def prime(n,result):
    flag=[1]*(n+2)
    p=2
    while p<=n:
        result.append(p)
        for i in range(2*p,n+1,p): #从4开始的偶数,全都不是素数
            flag[i]=0    #所以flag都是0
        while 1:
            p+=1
            if flag[p]==1:
                break

a = input().split()
result=[]
prime(20000,result)
final = result[int(a[0])-1:int(a[1])] #第x个素数的下标是x-1
if len(final)==1:
    print(final[0])
else:
    for i in range(len(final)-1):
        if (i+1)%10==0:
            print(final[i])  #每一行的第10个输出换行
        else:
            print(final[i],end=' ') #前9个end=空格


    if (i+2)%10==0:
        print(final[i+1])
    else:
        print(final[i+1],end='')

[点击并拖拽以移动]
​

前面关于素数的求法看得懂

就是最后的部分 if(i+2)%10==0往后的缩进不太明白

这里if 和上面的for循环是相同的缩进,为什么程序没有出错啊,

猜你喜欢

转载自blog.csdn.net/weixin_43731183/article/details/86078125
今日推荐