用來練手的python 練習題,原鏈接 : python練習實例12
題干 : 判斷101-200之間有多少個素數,并輸出所有素數
源代碼如下:
import numpy as np
bound = np.arange(101,201,1)
result = np.array([])
for k in bound:for i in range(k):# 如果k存在不是1或k本身的因數i,則k不是素數if k/(i+1) == k//(i+1) and (i+1)!=k and (i+1)!=1:breakelif i+1 == k:result = np.append(result, k)
print(result)
輸出結果如下 :
上述代碼是對范圍內的所有整數k,都遍歷小于它的所有整數,如果找到不是1和k本身的因數,則k不是素數,反之,k是素數。實際在找素數k的時候,我們只需要判斷在2?k2-\sqrt{k}2?k?范圍內是否有k的因數。下面放標準答案:
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):k = int(sqrt(m + 1))for i in range(2,k + 1):if m % i == 0:leap = 0breakif leap == 1:print '%-4d' % mh += 1if h % 10 == 0:print ''leap = 1
print 'The total is %d' % h