Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm số Armstrong trong một khoảng cho trước trong JavaScript

Tìm số Armstrong trong một khoảng cho trước trong JavaScript

Một số được gọi là số Armstrong nếu phương trình sau đúng với số đó: xy...z = x^x + y^y + ... + z^z, trong đó n biểu thị số chữ số của số.

Ví dụ:

153 là số Armstrong vì:

1^1 + 5^5 + 3^3 = 1 + 125 + 27 = 153

Chúng ta cần viết một hàm JavaScript nhận vào hai số (một khoảng) và trả về tất cả các số giữa chúng là số Armstrong (bao gồm cả hai đầu nếu chúng là số Armstrong).

Ví dụ

Mã thực hiện như sau:

const isArmstrong = number => {
  let num = number;
  const len = String(num).split("").length;
  let res = 0;
  while(num){
    const last = num % 10;
    res += Math.pow(last, len);
    num = Math.floor(num / 10);
  };
  return res === number;
};
const armstrongBetween = (lower, upper) => {
  const res = [];
  for(let i = lower; i <= upper; i++){
    if(isArmstrong(i)){
      res.push(i);
    };
  };
  return res;
};
console.log(armstrongBetween(1, 400));

Đầu ra

Kết quả trong console:

[ 
  1, 2, 3, 4, 5, 
  6, 7, 8, 9, 153, 
  370, 371 ]