1. 程式人生 > >牛客網線上程式設計(零):質數-python

牛客網線上程式設計(零):質數-python

這是一道牛客網上的一道非常簡單的題目,但是,它的輸出格式卻讓人很煩,如果你沒有大量的寫過這樣的輸出格式,這個例題給大家提供一個思路。

題目要求:P_i表示第i個質數,那麼輸入兩個整數M,N,請輸出P_M到P_N之間的所有質數(包括P_M,P_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

輸入是一行,兩個數用空格隔開

輸出是每10個數一行,中間用空格隔開,注意每行的最後一個數後面只有換行符,無空格(雖然輸出時看起來都一樣),每一行的最前面也沒有空格。

下面是我的python程式碼: 

from math import sqrt

def my_function(num):
    if num%2==0 and num!=2:
        return False
    num_sqrt=int(sqrt(num))
    for i in range(3,num_sqrt+1,2):
        if num%i==0:
            return False
    return True

def print_func(lis,length):
    i=0
    while True:
        if lis[i*length:(i+1)*length]:
            print(' '.join(lis[i*length:(i+1)*length]))
            i+=1
        else:
            break

if __name__=="__main__":
    M,N=input().split(' ')
    M=int(M)
    N=int(N)
    i=0
    num=2
    result=[]
    while True:
        if my_function(num):
            i+=1
            if M<=i<=N:
                result.append(str(num))
            elif i>N:
                break
        num+=1
    print_func(result,10)

為大家說明一下輸出函式的引數:lis是要輸出的質陣列成的列表,length是一行允許的元素個數,例子中取得是10,實現方法我想都能看懂,非常的簡單,大家也可以嘗試其它的方法,但一定要看一下自己的輸出的每一行的末尾是否存在空格,尤其是最後一行,這個很關鍵。

以後再有類似的輸出格式,可以直接呼叫這個函數了。