令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 PM 到 PN 的所有素数,每 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
结尾无空行
代码实现:
import math
# 判断素数
def sushu(x):
for j in range(3, int(math.sqrt(x)+1)):
if x % j == 0:
return 0
return 1
# 将输入的要输出素数的长度存入列表
n = input().split()
# 取出开始的位置
M = int(n[0])
# 取出结束的位置
N = int(n[1])
# 素数列表
list = []
# 先将2存入列表,方便计算素数时只计算奇数
list.append(2)
i = 3
while True:
# 将素数存入列表中
if sushu(i) == 1:
list.append(i)
# 只考虑奇数是否为素数,偶数除开2不用看
i += 2
# 当素数够了时结束循环
if len(list) > N:
break
# 记录打印素数的个数
flag = 0
for k in range(M-1, N):
flag += 1
# 当打印十个素数后换行,或者打印最后一个素数时自动换行
if flag % 10 == 0 or k == N-1:
print(list[k])
else:
# 按格式输出
print(list[k], end=' ')