今天繼續,答案都通過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的數加入列表中。
