第36题
**习题过于经典,分析就不多写了,给了两种解法,主要想着如何能够减少运行时间,解法1是比较基础的解法,解法2是能想到的运行时间较短的算法。
#求100以内的素数
import time,math
def primeQ(x):
if x == 2 or x == 3:
return True
else:
for i in range(2,int(math.sqrt(x))+1):
if x % i == 0:
break
else:
return True
#方法1
start = time.time()
for j in range(2,100):
if primeQ(j) == True:
print(j)
time.sleep(2)
end = time.time()
print(f"方法1运行时间:{end-start-2}")
#方法2
start = time.time()
lst = list(filter(primeQ,range(2,100)))
print(lst)
time.sleep(2)
end = time.time()
print(f"方法2运行时间:{end-start-2}")
- 运行结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
方法1运行时间:0.0011143684387207031
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
方法2运行时间:0.00011444091796875