c语言找出比n小的最大质数,C++ 实现求小于n的最大素数的实例

C++ 实现求小于n的最大素数的实例

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

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

分析:

找不到一个数学公式,使得根据N就可以计算出这个素数

我们思考:

N-1是素数么?N-2是素数吗?...

所以我们就是判断N-K是否为素数:

N-K是素数的充分必要条件:N-K不能被[2,n-k)中任何一个整除

判断N-K是否为素数的问题可以转化为:

求小于N-K的全部素数(求“小于N的最大素数”中的条件是“n不能被[2,n)中任意一个素数整除”,而不是整数)

不能被[2,n)中任意一个素数整除的数一定是素数,因为那些整数都是以素数为因子的,

所以没必要检测所有整数,检测所有素数就ok了

解决方法:

2是素数,记为PRIM 0

根据PRIM 0,PRIM 1,...PRIM K,寻找比PRIM K大的最小素数PRIM K+1(这里是根据素数找素数)

如果PRIM K+1大于N,则PRIM K是我们需要找的素数,否则继续寻找

枚举:

从可能的集合中一一列举各元素

根据所知道的知识,给一个猜测的答案

比如:2是素数,那2是本问题的解么

枚举算法:

对问题可能解集合的每一项:

根据问题给定的检验条件判断哪些是成立的

使条件成立的即为问题的解

枚举过程&#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值