[牛客网]回文素数
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'))
以上是关于[牛客网]回文素数的主要内容,如果未能解决你的问题,请参考以下文章