Số Armstrong: Một số nguyên dương được gọi là số Armstrong (cấp n) nếu:
abcd... = a^n + b^n + c^n + d^n + ...
Chúng ta cần viết một hàm JavaScript nhận vào một mảng đúng hai số chỉ định một khoảng.
Hàm nên trả về một mảng tất cả các số Armstrong nằm trong khoảng đó (bao gồm số bắt đầu và kết thúc nếu chúng là Armstrong).
Chúng ta sẽ trước tiên viết riêng một hàm phát hiện số Armstrong và sau đó lặp qua khoảng để điền mảng với các số mong muốn.
Ví dụ
Dưới đây là mã nguồn:
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));Kết quả
Đầu ra trên console:
[ 153, 370, 371, 407 ]
Giải thích: Số Armstrong (Narcissistic number): tổng lũy thừa bậc n của các chữ số = số đó. Trong khoảng 11-1111 có 4 số: 153, 370, 371, 407 (cả 3 chữ số). 1-9 cũng là Armstrong (1^1=1...) nhưng ngoài khoảng.