1. 程式人生 > >Python編寫求100以內素數

Python編寫求100以內素數

注:本文所使用的方法都是從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!