输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输入样例:
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
代码:
# 首先写一个可以判断素数的函数
M, N = map(int,input().split(" "))
def prime(n):
if n % 2 == 0:
return n == 2
if n % 3 == 0:
return n == 3
if n % 5 == 0:
return n == 5
for i in range(7,int(n**0.5)+1,2):
if n % i == 0 and n != i:
return n == 0
return 1
#如果敲出所有的数再一个一个判断肯定是不行的,而且除了2以外素数都是奇数,首先要找到PM如果找到PM就好办了
count = 0 #count用来找PM
i = 2
lst = [] #用来存放素数
while count < M: #跳出循环的i是下一位,因此第m个素数应该是i-1
if prime(i):
count += 1
i += 1
else:
i += 1
PM = i-1
while count <= N:
if prime(PM):
lst.append(PM) #注意一定要先把这个素数添加到列表里,再加2,要不然就不是判断后的结果了
count += 1
PM += 2
else:
PM += 2
# 到这一步之后,lst已经装满了符合条件的所有素数
#需要一个计数变量,表明当前输出的个数,其实不需要用i即可
for i in range(len(lst)-1):
print(lst[i],end = " ")
if (i+1)%10 == 0:
print(end = "\n")
print(lst[-1])
格式错误好像是因为我每行输出完多了一个空格,我还不知道怎么处理。