python3練習100題——012


今天繼續,答案都通過py3測試。

原題鏈接:http://www.runoob.com/python/python-exercise-example12.html

題目:判斷101-200之間有多少個素數,並輸出所有素數。

程序分析判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。

我的代碼:

def primes():
    li=[]            
    for m in range(101,200):
        state=1
        x=int(m**0.5)      #可以不用math.sqrt()比較省事~
        for i in range(2,x+1):
            if m%i==0:      #注意是余數為0的數,才不是素數,需要break
                state=0
                break
        if state==1:
            li.append(m)
    print("total:%d" %len(li))
    print(li)
                

思考:

需要一個state變量,來判斷狀態。

在每個循環開始,state=1,也就是默認一個數的狀態是1,表示它是素數。

只有在if語句判斷成功的時候,state改為0,表示這個數不是素數了。if語句要循環判斷很多次,可能其中只有1次滿足了。設置state可以達到要求:只有一次滿足就不是素數。

接下來再經過一個if語句,可以把所有state=1的數加入列表中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM