首页 > 试题广场 >

神奇数

[编程题]神奇数
  • 热度指数:3276 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给出一个区间[a, b],计算区间内“神奇数”的个数。
神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。
比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

输入描述:
输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000)。


输出描述:
输出为一个整数,表示区间内满足条件的整数个数
示例1

输入

11 20

输出

6
var readline = require('readline');
var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
var arr = [];
rl.on('line', function (line) {
    arr = line.split(" ");
    rl.close();
});
function test(arr) {
    var a = parseInt(arr[0]);
    var b = parseInt(arr[1]);
    var count =0;
    function iszhishu(arg) {
        var flag =true;
        var gra =parseInt(arg.toString().split("").reverse().join(""));
        for(var i =2;i < Math.floor(arg /2); i++) {
            if(arg % i ==0) {
              flag =false;
            }
        }
        if(!flag){
            flag =true;
            for(var i =2; i < Math.floor(gra /2); i++) {
                if(gra % i ==0) {
                    flag =false;
                }
            }
  }
  return flag?1:0;
    }
    for(var j = a; j <=b; j++) {
        var sum =0;
        var arr1 = j.toString().split("");
        for(var k =0; k < arr1.length; k++) {
            for(var m = arr1.length -1; m > k; m--) {
                var arr2 = [arr1[k], arr1[m]];
                var num = parseInt(arr2.join(""));
                if(iszhishu(num)&&num%10!=0&&num>10){
                    sum=1;
                    break;
                }
            }
        }
        count+=sum;
    }
    return count;
}
rl.on('close', function () {
    console.log(test(arr));
    process.exit(0);
});

发表于 2017-05-20 21:16:43 回复(0)

热门推荐

通过挑战的用户

神奇数