回文趣题

回文数举例: 1234321

问题: 求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值

分析:突破口最简单的二进制开始,首先二进制首位不能为0,根据回文数字的特点可得末位肯定为1,那么这个数字肯定是基数

方法: Number.toString(radix) 返回相应得进制数字 

            Number.toString(radix).split('')  传 ‘’  空字符串可将字符串得每一个字符切分到数组中

            Number.toString(radix).split('').reverse().join('')  利用数组得reverse反转后再用join转为字符串

            判断两个字符串是否相等即可 

            有更好方法?实用性 ?缺陷?

        let min = 11
        function isHuiwen(num, radix = 10) {
            return reverseNum(num, radix) === num.toString(radix)
        }
        function reverseNum(num, radix) {
            return num.toString(radix).split('').reverse().join('')
        }
        function findMin(min) {
            let finded = false
            while (!finded) {
                if (isHuiwen(min) && isHuiwen(min, 2) && isHuiwen(min, 8)) {
                    finded = true
                    return min
                } else {
                    min += 2
                }
            }
        }
        console.log(findMin(11)) // 585

猜你喜欢

转载自blog.csdn.net/coderMozart/article/details/83013511