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. 猜测