2021-01-31 第36题 求100之内的素数

第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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容