首页 > 试题广场 >

素数对

[编程题]素数对
  • 热度指数:28867 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))

输入描述:
输入包括一个整数n,(3 ≤ n < 1000)


输出描述:
输出对数
示例1

输入

10

输出

2
var n = parseInt(readline());

//len以内的所有素数
function prime(len){
    var arr = [2];  
    for(var i = 3; i < len; i+=2){  
        for(var j=2; j < i; j++){  
            if(i%j === 0) {
                break;   
            }
        }
        if(i <= j && i !=1){
            arr.push(i); 
        }
    }
    return arr;
}

var newArr = prime(n);
var cnt = 0;
for(var i=0; i<newArr.length; i++){
    for(var j=newArr.length-1; j>=0; j--){
        if(i<=j && newArr[i]+newArr[j] == n){
            cnt++;
        }
    }
}
console.log(cnt);

发表于 2017-08-15 15:35:35 回复(0)
var n=readline();
var str=[];
var count=0;
//质数找出来
function zhishu(num) {
if(num == 1) {
returnfalse;
}
if(num == 2) {
returntrue;
}
for(var i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if(num % i == 0) {
returnfalse;
}
}
returntrue;
}
for(var j = 1; j < n; j++) {
if(zhishu(j)) {
str.push(j);
}
}
for(var i=0;i<str.length;i++){
for(var j=i+1;j<str.length;j++){
if(str[i]+str[j]==n||str[i]*2==n) {
count++;
}
}
}
print(count);
编辑于 2017-08-14 15:38:22 回复(0)