Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาตัวเลขพาลินโดรมที่ใหญ่ที่สุดจากผลคูณของสองจำนวน n หลักใน JavaScript

หาตัวเลขพาลินโดรม (อ่านจากหน้าหลังเหมือนกัน) ที่ใหญ่ที่สุดซึ่งเป็นผลคูณของสองจำนวนที่มี n หลัก

ตัวอย่าง: n=2 → 9009 (91 × 99); n=3 → 906609

ตัวอย่างโค้ด

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));

ผลลัพธ์

ค่าที่แสดงในคอนโซลจะเป็นดังนี้:

906609