diff --git a/Project-Euler/Problem4.js b/Project-Euler/Problem4.js new file mode 100644 index 000000000..d12f77f1e --- /dev/null +++ b/Project-Euler/Problem4.js @@ -0,0 +1,38 @@ +// https://projecteuler.net/problem=4 +/* A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. + Find the largest palindrome made from the product of two 3-digit numbers. +*/ +const largestPalindromic = (digits) => { + let i, n, m, d, inf, sup, limit, number = 0; + for (i = 1; i < digits; i++) { + number = 10 * number + 9; // + } + inf = number; // highest (digits - 1) number, in this example highest 2 digit number + sup = 10 * number + 9; // highest (digits) number, in this example highest 3 digit number + + function 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; // returning whether the number is palindromic or not + } + + for (n = sup * sup, m = inf * inf; n > m; n--) { + if (isPalindromic(n)) { + limit = Math.ceil(Math.sqrt(n)); + d = sup; + while (d >= limit) { + if (n % d === 0 && n / d > inf) { + return n; + } + d -= 1; + } + } + } + return NaN; // returning not a number, if any such case arise +} + +console.log(largestPalindromic(3)); \ No newline at end of file