一个正整数称为阿姆斯特朗数(n阶)如果
abcd... = an + bn + cn + dn + ...
对于 3 位数的阿姆斯特朗数,每位数的立方和等于该数本身。例如,153 是阿姆斯特朗数,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
同样,1634 是阿姆斯特朗数,因为:
1634 = 1*1*1*1 + 6*6*6*6* + 3*3*3*3 + 4*4*4*4
示例 1: 检查 Armstrong 的三位数字
// program to check an Armstrong number of three digits let sum = 0; const number = prompt('Enter a three-digit positive integer: '); // create a temporary variable let temp = number; while (temp > 0) { // finding the one's digit let remainder = temp % 10; sum += remainder * remainder * remainder; // removing last digit from the number temp = parseInt(temp / 10); // convert float into integer } // check the condition if (sum == number) { console.log(`${number} is an Armstrong number`); } else { console.log(`${number} is not an Armstrong number.`); }
输出
Enter a three-digit positive integer: 153 153 is an Armstrong number.
上述程序接受用户的输入。那么,
用户输入的数字存储在临时变量 temp
中。
while
循环用于迭代一个三位数的值。 模运算符 %
用于获取每个数字。一个数除以10,余数就是最后一位。在第一次迭代中,153 % 10
给出 3。 余数的立方是通过将数字乘以三来计算的。并将立方体添加到 sum
变量中。 数字除以 10 以删除最后一位数字。 while
循环继续迭代并将数字除以 10,直到数字为 0。
最后,将总和与用户输入的数字进行比较。如果总和与数字相等,则该数字为阿姆斯特朗数。
注意: 在上面的程序中,可以使用指数运算符**来计算数字的立方。例如 sum += 余数 ** 3;
示例 2: 检查阿姆斯壮 n 位数
// program to check an Armstrong number of n digits // take an input const number = prompt("Enter a positive integer"); const numberOfDigits = number.length; let sum = 0; // create a temporary variable let temp = number; while (temp > 0) { let remainder = temp % 10; sum += remainder ** numberOfDigits; // removing last digit from the number temp = parseInt(temp / 10); // convert float into integer } if (sum == number) { console.log(`${number} is an Armstrong number`); } else { console.log(`${number} is not an Armstrong number.`); }
输出
Enter a positive integer: 92727 92727 is an Armstrong number
在上面的程序中,检查了 n 位的阿姆斯特朗数。
当用户输入一个数字时,它被当作一个字符串。
length
属性返回字符串的长度。
用户输入的数字存储在
temp
变量中。并且使用
while
循环进行迭代,直到其值小于 0。数字的每一位都是数字长度的幂。