[牛客网]回文素数

[编程题] 回文素数

时间限制:1秒
空间限制:32768K
如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。

输入描述:

输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)

输出描述:

输出一个整数,表示区间内回文素数个数。

输入例子1:
100 150

输出例子1:
2

判断下素数再判断下回文,结束…

let ans = (line)=>{
    let left_ = parseInt(line.split(' ')[0]),
        right_ = parseInt(line.split(' ')[1])
    let isPrime = (num)=>{   //判断质数
        if(num===2){ //2是质数
            return true
        }else if(num%2===0||num===1||num===0){ //排除偶数,0,1
            return false
        }else{
            let sqrtNum = Math.sqrt(num)
            for(let i=3;i<=sqrtNum;i+=2){
                if(num%i===0){
                    return false
                }
            }
            return true
        }
    }
    let isVa = (num)=>{  //判断回文
        let numArr = num.toString().split('')
        if(numArr.length === 1){
            return true
        }
        let left_str,right_str;
        if(numArr.length%2){    
            left_str = numArr.slice(0,parseInt(numArr.length/2)).join('')
            right_str = numArr.slice(parseInt(numArr.length/2)+1,numArr.length).reverse().join('')
        }else{
            left_str = numArr.slice(0,parseInt(numArr.length/2)).join('')
            right_str = numArr.slice(parseInt(numArr.length/2),numArr.length).reverse().join('')
        }
        if(left_str===right_str){
            return true
        }else{
            return false
        }
    }
    let ret = 0
    for(let num=left_;num<=right_;num++){
        if(isPrime(num)){
            if(isVa(num)){
                // console.log(num)
                ret++
            }
        }
    }
    return ret
}

console.log(ans('100 150'))
console.log(ans('1 9'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值