让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。1
2
3
4输入样例:
20
输出样例:
4
代码如下:
1 | #include<iostream> |
第一次提交测试点1没过,一猜就是某个边界没弄好,而且数还不大,然后想来一下,试了7,发现7输出的是1,才知道自己在算的时候,把7漏了,不超过N,是可以包括N的,所以在某些地方加上=就过了。
自己想的方法无非是就是开根号后一个个试,一看这样的题目就是求素数,数学方面的解法肯定有不少比较简单的,百度了一下求素数的方法,看到一个叫厄拉多塞筛法的办法,不难理解,然后实现了一下,就采用它了。主要还是PAT这一题测试的数据量不大,不然我也得跪。
测试结果:
| 测试点 | 结果 | 用时(ms) | 内存(kB) | 得分/满分 |
|---|---|---|---|---|
| 0 | 答案正确 | 1 | 180 | 10/10 |
| 1 | 答案正确 | 1 | 308 | 2/2 |
| 2 | 答案正确 | 1 | 256 | 2/2 |
| 3 | 答案正确 | 1 | 256 | 2/2 |
| 4 | 答案正确 | 1 | 308 | 2/2 |
| 5 | 答案正确 | 16 | 820 | 2/2 |