用来练手的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