题目如下:
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
题解如下:
先求出范围内的全部素数存在数组里,再对数组进行循环遍历求素数对个数
overover
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(data) {
console.log(deal(parseInt(data)));
})
function deal(input) {
var arr = []; //存放素数的数组
//求范围内所有素数
for(var i = 2; i <= input; i++) {
var n = parseInt(Math.sqrt(i));
var j;
for(j = 2; j <= n; j++) {
if(i % j == 0) break;
}
if(j > n) arr.push(i);
}
var num = 0; //素数对的个数
for(var i = 0; i < arr.length; i++) {
if(arr[i+1] - arr[i] == 2) {
num++;
}
}
return num;
}