- p*q <= m
- a/b<= p/q <= 1
并且要求找着这样的p和q的乘积最接近m的。数值范围规定如下:
- 4 < m <= 100000
- 1 <= a <= b <= 1000
这类题目的基本思路
- 缩小搜索范围
- 确定搜索的顺序
- 注意剪枝
具体做法:第一步就是要缩小素数的范围,第一感觉是可以在[2,m / 2]范围内查找,但这不是最小的范围。最土的方法就是试验,可以得出最小的范围是[2, 9091]。搜索的范围,因为是要找到最大的值,可以尝试从大到小遍历。对于剪枝的问题,要找到几个条件中,为真或为假的频率,适当调整判断的顺序。对于,对于或而言,如果第一个为真,后面无须再判断,对于且来说,第一个为假,后面的无需再判断。
代码比较简单,就不上了。