Python判斷合數、質數

來源:互聯網
上載者:User

標籤:接收   使用   append   特性   函數   lte   優雅   思路   str   

首先明確合數和質數的概念

合數:自然數中除了能被1和本身整除之外,還能被其他的數整除的數。(4,6,9,10...)

1 def heshu(m):2     list_a = []3     for i in range(2,m+1):4         for j in range(2,i):5             if i % j == 0 :6                 list_a.append(i)    #判斷i能否被(2,i)之間的數整除,能整除則為合數,添加到list中7                 break8     print(list_a)9 heshu(20)

 

質數:大於1的自然數中除了能被1和本身整除之外,不能被其他的數整除的數。(2,3,5,7...)

 1 def zhishu(m): 2     list_a = [] 3     for i in range(2,m+1): 4         flag = 0 5         for j in range(2,i): 6             if i % j == 0 : 7                 flag = 1            #若i能被(2,i)之間的數整除,將flag置為1,跳出當前迴圈 8                 break 9         if flag == 0:10             list_a.append(i)        #執行完內層迴圈後,若flag未被置1,則表示i為質數,添加list11     print(list_a)12 zhishu(20)

 

Tips

由於剛開始使用python,對其內建函數還暫不瞭解,因此在進行代碼編寫的時候可能會較多的想到C的思路,總感覺代碼整體有些臃腫。

特別是在寫質數函數的時候,i % j == 0 是用來判斷合數的,但我們卻要輸出質數,因此想到用flag來對合數做標記以達到目的。

後來在別處看到使用filter()函數進行處理的方法,感覺這才符合python優雅的特性嘛。。。

1 def zhishu2(num):2     for i in range(2, num):3         if num % i == 0:4             return False5     return True6 new_list = list(filter(zhishu2,range(2,21)))7 print(new_list)

 

filter()函數使用方法:

接收兩個參數,第一個為函數f(輸出布爾類型),第二個為序列ist,將list中的元素依次代入f中,根據函數中的判斷條件選擇返回True或者False,最後返回True的元素重新組成一個新的list

當自己使用這個函數的時候,一開始是想直接列印出來:

new_list = filter(zhishu2,range(2,21))print(new_list)

但是輸出卻有問題

又仔細看了下該函數的用法,發現這個filter函數輸出的應該是組成列表的元素,而不是直接一個列表,所以需要再將它轉化成列表:

new_list = list(filter(zhishu2,range(2,21)))print(new_list)

這樣就能正常的輸出了

 

Python判斷合數、質數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.