เราต้องเขียนฟังก์ชันหาตัวเลขที่น้อยที่สุดที่หารด้วยทุกตัวเลข 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