头歌python实训通关八——素数个数
第1关:使用进程池统计指定范围内的素数个数
任务描述
本关任务:编写程序,使用进程池统计指定范围内的素数个数。
相关知识
为了完成本关任务,你需要掌握:1.进程池,2.素性检测。
编程要求
根据提示,在右侧编辑器补充代码,输出指定范围内素数个数。
测试说明
平台会对你编写的代码进行测试:
测试输入: 2000 预期输出: 303
测试输入: 5000 预期输出: 669
import multiprocessing import math def is_prime(m): """ 判断一个数m是不是素数 :param m: 正整数 """ # 请在此处添加代码 # # *************begin************# if m <= 1: return False for j in range(2, int(math.sqrt(m)) + 1): if m % j == 0: return False return True # **************end*************# def main(n): """ 判断0~n之间素数的个数 :param m: 正整数 """ # 请在此处添加代码 # # *************begin************# pools = multiprocessing.Pool(5) print(sum(pools.map(is_prime, range(n)))) # **************end*************# if __name__ == __main__: n = int(input()) main(n)
第2关:使用ProcessPoolExecutor统计指定范围内的素数个数
任务描述
本关任务:编写程序,使用ProcessPoolExecutor并发统计指定范围内的素数个数。
相关知识
为了完成本关任务,你需要掌握:1.ProcessPoolExecutor 2.素性检测。
编程要求
根据提示,在右侧编辑器补充代码,输出指定范围内素数个数。
测试说明
平台会对你编写的代码进行测试:
测试输入: 2000 预期输出: 303
测试输入: 5000 预期输出: 669
import concurrent.futures import math def is_prime(m): """ 判断一个数m是不是素数 :param m: 正整数 """ # 请在此处添加代码 # # *************begin************# if m <= 1: return False for j in range(2, int(math.sqrt(m)) + 1): if m % j == 0: return False return True # **************end*************# def main(n): """ 判断0~n之间素数的个数 :param m: 正整数 """ # 请在此处添加代码 # # *************begin************# with concurrent.futures.ProcessPoolExecutor() as pool: print(sum(pool.map(is_prime, range(n)))) # **************end*************# if __name__ == __main__: n = int(input()) main(n)
下一篇:
Java获取实体类的属性名和属性值