1013 数素数 (20 分)

Pi 表示第 i 个素数。现任给两个正整数 MN≤104,请输出 PMPN 的所有素数。

输入格式:

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

输出格式:

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

输入样例:

1
2
3
5 27

结尾无空行

输出样例:

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

结尾无空行

题解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

#导入math库,以使用sqrt
import math
#将输入的字符串按空格分割
a=input().split(' ')
#开始的个数
start=int(a[0])
#结束的个数
end=int(a[1])

#判断素数
def isprime(n):
if n==2 or n==3:
return True
if n%2==0 or n%3==0:
return False
for k in range(6,int(math.sqrt(n))+2,6):
if n%(k-1)==0 or n%(k+1)==0:
return False
return True

#用来存放待输出的结果
results=[]
#flag用来标记素数的个数
flag=0
#n用来判断素数
n=2
#素数个数等于end时循环结束
while flag!=end:
if isprime(n):
flag=flag+1
#素数个数大于start时开始输出
if flag>=start:
#按格式进行对应的输出
if flag == end:
print(n, end='')
elif (flag + 1) % 10 == start:
print(n, end='\n')
else:
print(n, end=' ')
n=n+1