Xét số 9009. Đây là palindrome lớn nhất từ tích hai số 2 chữ số (91 và 99). Chúng ta cần viết hàm nhận số n (số chữ số), tìm palindrome lớn nhất từ tích hai số n chữ số.
Ví dụ
Code sau đây:
const largestPalindromic = num => {
let i, n, m, d, max, sup, limit, number = 0;
for (i = 1; i < num; i += 1) number = 10 * number + 9;
max = number;
sup = 10 * number + 9;
const isPalindromic = n => {
let p = 0, q = n, r;
while (n > 0) { r = n % 10; p = 10 * p + r; n = Math.floor(n / 10); }
return p === q;
};
for (n = sup * sup, m = max * max; n > m; n -= 1) {
if (isPalindromic(n)) {
limit = Math.ceil(Math.sqrt(n));
d = sup;
while (d >= limit) {
if (n % d === 0 && n / d > max) return n;
d -= 1;
}
}
}
};
console.log(largestPalindromic(3));Kết quả
Kết quả trên console:
906609