第4题:
找出第10001个质数
- # -*- coding: gb2312 -*-
- # 找出第10001个质数
- import math
- import time
- start = time.time()
- value, s, i = 3, 2, 1
- max = 2000000
- t0 = int(math.sqrt(max))+1
- market = [1] * max
- #while value < max:
- while i < 10001:
- if market[value]:
- s += value
- i += 1
- market[value] = 0
- if value < t0:
- for j in xrange(value**2,max,value*2):
- market[j] = 0
- value += 2
- print s,i,value-2
- end = time.time()
- print end-start
0.389999866486
经过了对内部for循环的下限,步长的微调,对是否执行该循环也提前进行了判断,在较小范围内进行质数判定时,可以认为此种填充算法是最快的了.来源于第10题的达人回复,对其进行了改进.