PAT

1003 数素数 (20)——python

2020-03-09  本文已影响0人  憨憨你好_我是敢敢

题目描述

令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
上一篇下一篇

猜你喜欢

热点阅读