[牛客网]回文素数

Posted PrConstantin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[牛客网]回文素数相关的知识,希望对你有一定的参考价值。

[编程题] 回文素数

时间限制: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'))

以上是关于[牛客网]回文素数的主要内容,如果未能解决你的问题,请参考以下文章

网易2017秋招编程题集合-牛客网

牛客网——Java刷题篇

网易2017秋招编程题集合_以下代码全部来自牛客网

牛客网刷题——JAVA

《手撕链表题系列-7》链表的回文结构

java连续最大和统计回文