一个正整数被称为一个 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
在尝试此程序之前,请访问 JavaScript 检查阿姆斯特朗数程序。
示例:两个区间之间的阿姆斯特朗数
// program to find Armstrong number between intervals
// take an input
const lowNumber = parseInt(prompt('Enter a positive low integer value: '));
const highNumber = parseInt(prompt('Enter a positive high integer value: '));
console.log ('Armstrong Numbers:');
// looping through lowNumber to highNumber
for (let i = lowNumber; i <= highNumber; i++) {
// converting number to string
let numberOfDigits = i.toString().length;
let sum = 0;
// create a temporary variable
let temp = i;
/* loop through a number to find if
a number is an Armstrong 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 == i) {
console.log(i);
}
}
输出
Enter a positive low integer value: 8 Enter a positive high integer value: 500 Armstrong Numbers: 8 9 153 370 371 407
在上面的程序中,用户被提示输入两个整数。一个是下区间整数,另一个是上区间整数。
parseInt() 将数字 字符串 值转换为整数值。
for
循环用于循环用户提供的两个数字。
toString() 方法用于将数字转换为字符串。length 属性用于查找字符串的长度。因此,在这种情况下,长度表示数字的总位数。
let numberOfDigits = i.toString().length;
在第一个 for
循环迭代(i = 8)中,
- 用户输入的下限数字存储在临时 变量
temp
中。 - 使用
while
循环来迭代数字。- 模运算符
%
用于获取每个数字。当一个数除以 10 时,余数就是最后一位数。在第一次迭代中,8 % 10
得到 8。 - 余数乘以该数字的位数(这里是 1)并计算总和。
- 数字除以 10 以删除最后一位数,即
8 / 10
得到 0。
- 模运算符
- 最后,将总和与用户输入的数字进行比较。如果总和与数字相等,则显示阿姆斯特朗数。
循环继续处理用户提供的上下边界之间的所有数字。在上例中,循环从 8 执行到 500。