python求小于n的最大素数_枚举1--求小于n的最大素数

本文通过枚举算法详细解析如何使用Python求解小于n的最大素数。首先介绍了问题背景和分析,指出无法直接通过数学公式计算,转而采用枚举策略。接着阐述了枚举算法的核心思想,包括从已知素数中寻找新素数的过程,以及如何利用素数特性减少搜索空间。最后,展示了两种不同的枚举实现方法,并通过实例比较了它们的时间复杂度和效率。
摘要由CSDN通过智能技术生成

1 /*

2 枚举就是基于已有知识镜像答案猜测的一种问题求解策略3

4 问题:求小于n的最大素数5

6 分析:7 找不到一个数学公式,使得根据N就可以计算出这个素数8

9 我们思考:10 N-1是素数么?N-2是素数吗?...11

12 所以我们就是判断N-K是否为素数:13 N-K是素数的充分必要条件:N-K不能被[2,n-k)中任何一个整除14

15 判断N-K是否为素数的问题可以转化为:16 求小于N-K的全部素数(求“小于N的最大素数”中的条件是“n不能被[2,n)中任意一个素数整除”,而不是整数)17 不能被[2,n)中任意一个素数整除的数一定是素数,因为那些整数都是以素数为因子的,18 所以没必要检测所有整数,检测所有素数就ok了19

20 解决方法:21 2是素数,记为PRIM 022 根据PRIM 0,PRIM 1,...PRIM K,寻找比PRIM K大的最小素数PRIM K+1(这里是根据素数找素数)23 如果PRIM K+1大于N,则PRIM K是我们需要找的素数,否则继续寻找24

25 枚举:26 从可能的集合中一一列举各元素27 根据所知道的知识,给一个猜测的答案28 比如:2是素数,那2是本问题的解么29

30 枚举算法:31 对问题可能解集合的每一项:32 根据问题给定的检验条件判断哪些是成立的33 使条件成立的即为问题的解34

35 枚举过程:36 判断猜测答案是否正确37 2是小于N的最大素数么?38 进行新的猜测:39 有两个关键因素要注意:40 1. 猜测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值