爱奇艺笔试 回文素数

链接: https://www.nowcoder.com/questionTerminal/4802faa9afb54e458b93ed372e180f5c
来源:牛客网

如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。
输入描述:
输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)


输出描述:

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


 


此时只能在牛客上提交为70%case通过。分析得,是因为边界没考虑清楚.代码如下:

var num=readline().split(' ');
          function algo(num) {
            var count = 0;
            for (var i = num[0]; i <= num[1]; i++) {
                for (var j = 2; j < i; j++) {
                    if (i % j == 0) {
                        break;
                    }
                }
                if (j == i) {
                    var arr = i.toString().split('');
                    for (var z = 0, m = arr.length - 1; z < m; z++ , m--) {
                        if (arr[z] != arr[m]) {
                            break;
                        }
                    }
                    if (z == m) {
                        count++;
                    }
                }
            }
             
                  
            return count;
            }
          console.log(algo(num));

这是在牛客网上通过率100%的代码,需要学习一下

链接:https://www.nowcoder.com/questionTerminal/4802faa9afb54e458b93ed372e180f5c
来源:牛客网

let num = readline().split( " " );
function output(num){
             let result = 0 ;
             let firstNum = parseInt(num[ 0 ], 10 );
             let n = parseInt(num[ 1 ], 10 )- firstNum;
             for (let j = 0 ; j <= n; j++){
                 let count = 0 ;
                 for (let i = 2 ; i <= (firstNum + j) / 2 ; i++){
                     if (count != 0 ){
                         break ;
                     }
                     if ((firstNum + j) % i== 0 ) count++;
                 }
                 if (count == 0 ){
                     let renum = parseInt((firstNum + j).toString().split( "" ).reverse().join( "" ), 10 );
                     if (renum == (firstNum + j)) result++;
                 }
             }
             if (parseInt(num[ 0 ], 10 ) == 1 ){ result--;}
             return result;
         }
console.log(output(num));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值