【Python基礎】函式:輸出一個區間內的素數
前言
如果只是判斷素數,那豈不是太沒有新意了
所以我們這次要在判斷素數的基礎上再加入函式的呼叫
對一個區間的素數進行輸出
思路解讀
如果你還不知道什么是素數,那么是不是有點說不過去了
素數(質數):是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數,(我百度的,我也不會)
既然我們已經知道什么是素數了,那么就將每個素數輸出到一個串列里不就好了
判斷質數
我們先來定義一個函式 ‘Prime’ ,用來判斷質數
如何判斷質數呢?
我們讓這個數 ‘i’ 除以 2到i-1 的每一個數,如果出現余數為0,那么這個數就是合數
那么問題來了
什么是合數呢
阿~就不是素數就是合數
代碼如下
def Prime(i):
for a in range(2, i):
if i % a == 0:
break
if a == i - 1:
return i
這段代碼會在這個數為素數的時候
回傳這個數的值
反之則回傳 none 值
(注意,不是素數的時候的并不是沒有回傳值,有回傳值,回傳值為’none’,代表回傳了個寂寞)
但是細心的小伙伴就會發現了
上面那段代碼并不能判斷出2是素數
因為當i == 2時,會直接break
所以我們對代碼進行一些小修改
def Prime(i):
if i == 2:
return 2
for a in range(2, i):
if i % a == 0:
break
if a == i - 1:
return i
這樣就能完美的判斷素數了!
輸出區間內的素數
通過上面的函式我們已經能夠判斷素數了
將判斷出的素數輸出到一個串列之中
就得到了我們的結果
那么我們再定義一個函式 'Primes’
用來輸出已知區間內的所有素數
代碼如下
def Primes(n,m):
li=[]
for i in range(n,m):
li.append(Prime(i))
return li
首先我們創建一個空串列 'li’
然后將上述函式的回傳值都添加到串列 ‘li’ 中
就得到了最終的結果
但是又會有細心的小伙伴又發現了
前文我們已經說過了
不是素數的時候并不是沒有回傳值
而會回傳 none
那么你的輸出結果會變成這個樣子
以n=1,m=100為例
[None, 2, 3, None, 5, None, 7, None, None, None, 11, None, 13, None, None, None, 17, None, 19, None, None, None, 23, None, None, None, None, None, 29, None, 31, None, None, None, None, None, 37, None, None, None, 41, None, 43, None, None, None, 47, None, None, None, None, None, 53, None, None, None, None, None, 59, None, 61, None, None, None, None, None, 67, None, None, None, 71, None, 73, None, None, None, None, None, 79, None, None, None, 83, None, None, None, None, None, 89, None, None, None, None, None, None, None, 97, None, None]
顯然,這并不是我們想要得到的效果
所以我們依舊要對代碼進行一些小修改
def Primes(n,m):
li=[]
for i in range(n,m):
if Prime(i) != None:
li.append(Prime(i))
return li
在添加到串列之前判斷該值是否為 none
這樣我們這道題就做完了
綜上所述
完整代碼如下
def Prime(i):
if i == 2:
return 2
for a in range(2, i):
if i % a == 0:
break
if a == i - 1:
return i
def Primes(n,m):
li=[]
for i in range(n,m):
if Prime(i) != None:
li.append(Prime(i))
return li
print('你想知道哪個區間中的全部素數?[n,m)')
n=int(input('n='))
m=int(input('m='))
print('區間[%d,%d)的所有素數為:'%(n,m),Primes(n,m))
同樣以n=1,m=100為例,進行輸出
得到如下輸出
你想知道哪個區間中的全部素數?[n,m)
n=1
m=100
區間[1,100)的所有素數為: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
結尾
一家之言,如有疏漏之處,還請指出
望一同進步
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273728.html
標籤:python
