Python編寫求100以內素數
阿新 • • 發佈:2019-02-09
注:本文所使用的方法都是從math 包裡面匯入進來sqrt函式,那麼也可以只匯入math包,但是應用sqrt函式時需要寫成math.sqrt()
方法一:
from math import sqrt
x=2
while x<=100:
k=sqrt(x)
i=2
while i<=k:
if(x%i==0):
break
else:
i=i+1
if i>k:
print(x,end=' ')
x=x+1
這種方法和其他語言的十分相似,不做解釋
方法二:
利用for迴圈
from math import sqrt
for x in range(2,101):#因為range函式終止值不包括在內,所以寫到101
flag=1 #利用flag以防止出錯,文章後續會解釋
k=int(sqrt(x))
for i in range(2,k+1):
if x%i==0:
flag=0
break
if flag:
print(x,end=' ')
因為在python中for迴圈i這個變數的增加和其他語言中for迴圈是不一樣的。如果if那裡還用if i>k判斷,會出現錯誤,所以我們加入了一個flag,首先大家可以試想一下,如果在x=2的時候,sqrt(x)是一個1點多的數,那麼在第二層for迴圈那裡就會出現問題,因為第二層for迴圈那裡就是range(2,2)這種顯然在range函式中是不允許的。所以會出問題,執行結果如果採取原來的思想也會出錯,因此我們利用flag來標誌哪一個是素數,這樣就成功啦~
對於python中for迴圈這裡我認為我還需要多加註意,慢慢習慣,加油使勁學習啊!希望接下來一週可以攻克python!