จำนวนอาร์มสตรอง (Armstrong Numbers)
จำนวนเต็มบวกที่ผลรวมของแต่ละหลักยกกำลัง n (n = จำนวนหลัก) เท่ากับตัวเลขนั้นเอง
เช่น 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153
ตัวอย่างโค้ด
const range = [11, 1111];
const isArmstrong = (num) => {
const numberOfDigits = ('' + num).length;
let sum = 0;
let temp = num;
while (temp > 0) {
let remainder = temp % 10;
sum += remainder ** numberOfDigits;
temp = parseInt(temp / 10);
}
return sum === num;
};
const findAllArmstrong = ([start, end]) => {
const res = [];
for (let i = start; i <= end; i++) {
if (isArmstrong(i)) {
res.push(i);
}
}
return res;
};
console.log(findAllArmstrong(range));
ผลลัพธ์
[153, 370, 371, 407]
คำอธิบาย
isArmstrong: นับจำนวนหลัก แล้วสะสม digit^count ตรวจสอบเท่ากับตัวเลขเดิม
findAllArmstrong: วนลูปทุกตัวเลขในช่วง [start, end] ตรวจสอบและเก็บ
Armstein numbers ในช่วง 1-10000: 1-9, 153, 370, 371, 407, 1634, 8208, 9474