素数对猜想
题目
“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N
(<105),请计算不超过N的满足猜想的素数对的个数。
输入例子
20
输出例子
4
解题思路
这个比较简单,看题目,能确定一点,一个素数对,有两个相差 2 的素数组成。那么接下来就可以用 n
除以2
到根号n
之中的任意一个数,如果能被整除,那么就不是素数,如果不能被整除,那么就是一个素数。如果发现了一个素数,那么就用这个素数相差2的数再去判断,如果还是素数,那么就有了一个素数对。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
function isPrime($num) { if ($num < 2) { return false; }
for ($i = 2; $i <= intval(sqrt($num)); $i++) { if ($num % $i == 0) { return false; } }
return true;
}
function test($num) { $count = 0; for ($i = $num; $i >= 5; $i--) { if ($this->isPrime($i) && $this->isPrime($i - 2)) { ++$count; } } printf($count); }
|