質數(prime number)又稱素數,有無限個。
質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。
如:2、3、5、7、11、13、17、19。
一、說明
判斷素數,函式或一般語句均可
100以內,設定迴圈上限
輸出格式要求
二、參考**
2.1 方法一(math庫)
import math #匯入math庫,以便使用裡面的乙個求平方根的函式
l =[2,
3]#因為range函式上限不能小於下線,所以2,3預先加到素數列表中,直接從5開始(因為知道4不是素數)迴圈
for i in
range(5
,101):
#第一層迴圈,從5到100
for j in
range(2
,int
(math.sqrt(i))+
1):#第二層迴圈,逐個判斷是否有因子
if i%j ==0:
#如果出現整除說明有因子
break
#跳出迴圈判斷下乙個
else
:#如果第二層迴圈結束還沒有跳出的話
#說明是素數,加到列表裡
print
(" "
.join(
map(
str, l)))
#先將列表中的元素變為字串再用空格連線輸出
2.2 方法二(list列表)#找出100內所有素數
ls =
;for i in
range
(100):
if i <2:
continue
for j in
range(2
, i)
:if i%j ==0:
#print("不是素數".format(i));
break
;else
:#print("是素數".format(i));
;print
(ls)
;
2.3、大神**print
(" "
.join(
"%s"
% x for x in
range(2
,100)if
not[y for y in
range(2
,x)if x % y ==0]
))
果然python什麼都能用一行**解決。。。
其實還看得不是很懂。。。等以後懂了再來講解。。
h =
[true]*
100h[:2
]=[false
,false
]for i in
range(2
,int
(100
**0.5)+
1):if h[i]
: h[i*i:
:i]=
[false]*
len(h[i*i:
:i])
s=''
for i, e in
enumerate
(h):
if e:
s +=
str(i)
+' '
print
(s.strip(
))
三、深入講解
判斷素數的上限最準確的應該使用平方根取整加一,如上面**所示,但是如果向本題總共就判斷到100呢為了簡便使用近似的i//2+1即整除2加一也是可以的,驗證一下可以發現上限其實是擴大了的(比如根號5=2.23<5/2=2.5)的(根號2根號3進不了迴圈),所以是不會出錯的。
2.來自haotie
可參考判斷乙個數是不是素數 埃拉託斯特尼篩法 時間複雜度 o(n*lglgn)
3.菜鳥教程
Python 計算100以內素數之和
找出100內所有素數 ls for i in range 100 if i 2 continue 難點 1.range 2,2 返回空值,直接跳過迴圈,未執行break,else語句會被執行 2.for.j迴圈執行完畢後,如果未找到滿足i j 0的數值,證明其是素數,break不會被執行,else會...
100以內進行猜數字 Python
100以內進行猜數字 from random import randint while true print 你只有六次機會 count 1 計錄猜數次數 產生乙個100以內的隨機數 number randint 0,100 the number int input 請輸入數字 while the ...
python(2)輸出100以內的素數
方法 一 100以內素數 import math 如同c 中的 include defprime n 定義帶乙個引數n的函式 number 定義空陣列用來記錄位置上的數是素數true,不是false prime number 定義空陣列用來儲存素數 for i in range 0,n,1 遍歷0到...