首先明確合數和質數的概念
合數:自然數中除了能被1和本身整除之外,還能被其他的數整除的數。(4,6,9,10...)
7 break
8 print(list_a)9 heshu(20)
質數:大於1的自然數中除了能被1和本身整除之外,不能被其他的數整除的數。(2,3,5,7...)
1 defzhishu(m):2 list_a =3 for i in range(2,m+1):4 flag =05 for j in range(2,i):6 if i % j ==0 :7 flag = 1 #若i能被(2,i)之間的數整除,將flag置為1,跳出當前迴圈
8 break
11 print(list_a)12 zhishu(20)
tips
由於剛開始使用python,對其內建函式還暫不了解,因此在進行**編寫的時候可能會較多的想到c的思路,總感覺**整體有些臃腫。
特別是在寫質數函式的時候,i % j == 0 是用來判斷合數的,但我們卻要輸出質數,因此想到用flag來對合數做標記以達到目的。
後來在別處看到使用filter()函式進行處理的方法,感覺這才符合python優雅的特性嘛。。。
1 defzhishu2(num):2 for i in range(2, num):3 if num % i ==0:4 returnfalse5 returntrue6 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)
但是輸出卻有問題
new_list = list(filter(zhishu2,range(2,21)))print(new_list)
這樣就能正常的輸出了
python求素數的函式 如何用python求素數
如何用python求100以內的素數?質數 primenumber 又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數,如 2 3 5 7 11 13 17 19。方法一,用for迴圈來實現num i 2for i in range 2,100 j 2fo...
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
python根據方程的y求x 用Python解方程
我們先從簡單的來 例題1 這是北師大版小學六年級上冊課本95頁的一道解方程練習題 大家可以先口算一下,這道題裡面的x的值為200 接下來我們用python來實現,如下,每一句 後面都寫有解釋語 1 import sympy 引入解方程的專業模組sympy 2 x sympy.symbols x 申明...