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

การหาตัวเลขที่น้อยที่สุดที่หารด้วย 1 ถึง n ลงตัว (อัลกอริทึมเฉพาะ) ใน JavaScript

เราต้องเขียนฟังก์ชันหาตัวเลขที่น้อยที่สุดที่หารด้วยทุกตัวเลข 1 ถึง n ลงตัว โดยใช้หลักการแยกตัวประกอบเฉพาะและหากำลังสูงสุดของแต่ละจำนวนเฉพาะที่ ≤ n

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

const smallestDivisible = (num) => {
  let i, n = 1;
  const largestPower = (n, num) => {
    let p, e = 2, largest = n;
    while ((p = Math.pow(n, e)) <= num) { largest = p; e += 1; }
    return largest;
  };
  const isPrime = n => {
    let i, limit = Math.ceil(Math.sqrt(n));
    for (i = 3; i <= limit; i += 2) { if (n % i === 0) { return false; } }
    return true;
  };
  for (i = 3; i <= num; i += 2) {
    if (isPrime(i)) { n *= largestPower(i, num); }
  }
  return n * largestPower(2, num);
};

console.log(smallestDivisible(20));

ผลลัพธ์

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

232792560