Chúng ta hãy coi số 9009. Đây là một số đặc biệt theo nghĩa đây là số palindrome lớn nhất có thể được tạo thành bằng cách nhân hai số có 2 chữ số (91 và 99).
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số n (chỉ định số chữ số). Hàm chỉ cần tìm và trả về số palindrome lớn nhất có thể được tạo thành bằng phép nhân hai số n chữ số.
Ví dụ
Sau đây là mã -
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));
Đầu ra
Sau đây là kết quả trên bảng điều khiển -
906609