牛客網線上程式設計(零):質數-python
阿新 • • 發佈:2018-11-03
這是一道牛客網上的一道非常簡單的題目,但是,它的輸出格式卻讓人很煩,如果你沒有大量的寫過這樣的輸出格式,這個例題給大家提供一個思路。
題目要求: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,實現方法我想都能看懂,非常的簡單,大家也可以嘗試其它的方法,但一定要看一下自己的輸出的每一行的末尾是否存在空格,尤其是最後一行,這個很關鍵。
以後再有類似的輸出格式,可以直接呼叫這個函數了。