题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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
******************************手动分割*******************************
解题思路:
1.注意是求第m个素数至第n个素数
2.进行素数条件判断
3.每输出十个素数进行换行
代码:
p = input().split(' ')#输入正整数m,n
m = int(p[0])#读取m
n = int(p[1])#读取n
num = 0#计数器
now = 2#第一个素数,now一直为PM与PN之间的素数
while num<n:
count = 1#判断是否为素数
# 第一个for循环是筛取素数
for i in range(int(now**0.5)+1):
if i>1 and i<now:#数的范围
if now%i == 0:#不是素数
count = 0#计数为零
break#结束,直接跳出循环,进行now++
#如果是素数且num为m,n之间值
if count == 1 and num+1 >= m:
#(num+2-m)
if (num+2-m)%10 != 0:
#如果num+1为最后一个素数
if num+1 == n:
print(now)
#如果不是最后一个素数,老老实实空格输出
else:
print(now,end=' ')
#如果num+2是第十个(或倍数)直接输出带换行
else:
print(now)
#如果是素数,num计数器加一进行循环
if count == 1:
num = num+1
#now持续加一直至循环结束
now = now+1
网友评论