1 #題目:判斷101-200之間有多少個素數,并輸出所有素數。
代碼:3 tmp = [n for n in range(101,201)]
4 for i in reversed(tmp):
5 for j in range(2,i):
6 if (i%j == 0):
編程語言共有幾種、7 tmp.remove(i)
8 break
9 print('101到200之間有%d個素數'%len(tmp))
10 print('這些素數分別是:')
11 print (tmp)
運行結果:[root@HK code_100]# python code_12.py
taichi編程語言,101到200之間有21個素數
這些素數分別是:
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
[root@HK code_100]#
代碼解釋:這個代碼用了一種比較繁瑣的方式,不過用來練習list的操作還是不錯的,因為牽扯到要統計素數的個數,
我覺得用len(list)比較合適, 思路是遍歷整個list,發現不是素數的就從list中刪除,最后剩下的
編程語言代碼、就是101到200之間的素數。
3 tmp = [n for n in range(101,201)] #建立101到200的升序list
4 for i in reversed(tmp): #倒敘遍歷tmp列表
5 for j in range(2,i): #針對tmp中的每個成員,用2到(i-1)進行取余
6 if (i%j == 0): #如果取余等于零,說明不是素數
7 tmp.remove(i) #將不是素數的數字從list中刪除
計算機語言python,8 break #直接跳出循環,不進行后面的驗證,以節省資源
9 print('101到200之間有%d個素數'%len(tmp)) #格式化輸出素數的個數
10 print('這些素數分別是:')
11 print (tmp) #打印素數
在第四行中用了倒敘遍歷list,因為tmp.remove的特點,如果用正序是得不出期望結果的,因為remove刪掉一個元素的時候,
這個元素后面的所有元素的下標都會減1(如果所有元素下標都不變就不會有問題),但是for循環的迭代是下標依次加1,這樣就會導致
python簡單代碼,在遍歷list的時候有一些元素是遍歷不到的,用逐步調試可以看到效果具體可以查一下remove的詳細解釋,這里使用倒敘是從后面開始減,
之前的下標不會用變化,這樣就不會影響到最終的結果。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态