一个正整数被称为(n阶)阿姆斯特朗数,如果
abcd... = an + bn + cn + dn + ...
对于一个三位数阿姆斯特朗数,其各位数字的立方和等于它本身。例如,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:检查三位数阿姆斯特朗数
// 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 += remainder ** 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。数字的每一位都被提升到数字长度的幂。
另请阅读