ภาพรวม
ตัวเลขสมบูรณ์ (Perfect number) คือจำนวนเต็มบวกที่เท่ากับผลรวมของตัวหารบวกของมัน ไม่นับตัวมันเอง ตัวหารของจำนวนเต็ม x คือจำนวนเต็มที่หาร x ลงตัว
ตัวอย่าง
28 เป็นตัวเลขสมบูรณ์ เพราะ 28 = 1 + 2 + 4 + 7 + 14
เราต้องเขียนฟังก์ชันที่รับตัวเลข n และตรวจสอบว่าเป็นตัวเลขสมบูรณ์หรือไม่
ตัวอย่างโค้ด
const num = 28;
const checkPerfectNumber = (num = 1) => {
if(num === 1) {
return false;
}
let sum = 1;
for(let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if(num % i === 0) {
sum = sum + i + num / i;
if(sum > num) {
return false;
}
}
}
return sum === num;
};
console.log(checkPerfectNumber(num));
ผลลัพธ์ในคอนโซล
true