Open 1684838553 opened 2 years ago
function getFunction() {
let num;
for (let i = 11;; i++) {
let binary = i.toString(2)
let octal = i.toString(8)
if (getPalindrome(i) && getPalindrome(binary) && getPalindrome(octal)) {
num = i
break;
}
}
return num
}
function getPalindrome(number) {
number = typeof number === 'string' ? number : String(number)
return number === number.split('').reverse().join('')
}
console.log(getFunction()) // 585
如果把某个数的各个数字按相反的顺序排列,得到的数和原来的数相同,则这个数就是“回文数”。譬如 123454321就是一个回文数。
求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数 10 的最小值。
思路:因为是二进制的回文数,所以如果最低位是 0,那么相应地最高位也是 0。但是,以 0 开头肯定是不恰当的,由此可知最低位为 1。如果用二进制表示时最低位为 1,那这个数一定是奇数,因此只考虑奇数的情况就可以。接下来可以简单地编写程序,从 10 的下一个数字 11 开始,按顺序搜索。
/* 为字符串类型添加返回逆序字符串的方法 */
String.prototype.reverse = function (){
return this.split("").reverse().join("");
}
/* 从 11 开始搜索 */
var num = 11;
while (true){
if ((num.toString() == num.toString().reverse()) &&
(num.toString(8) == num.toString(8).reverse()) &&
(num.toString(2) == num.toString(2).reverse())){
console.log(num);
break;
}
/* 只搜索奇数,每次加 2 */
num += 2;
}
求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数 10 的最小值。