Armstrong number in JavaScript



我得看看这个数字是不是Armstrong。结果显示所有的数字都是阿姆斯特朗数。请帮我找出错误。

var num1 = parseInt(prompt('Enter your number'))
var sum = 0
var num = num1
while (num1 > 0) {
var r = num1 % 10
var sum = sum + r * r * r
var num1 = num1 / 10
}
if (num == sum) {
document.write('It is an Armstrong Number')
} else {
document.write('It is not an Armstrong Number')
}

当你除以10时,你需要丢弃分数,这样你就只处理数字了。您可以使用Math.floor()来执行此操作。

var num1 = parseInt(prompt('Enter your number'))
var sum = 0
var num = num1
while (num1 > 0) {
var r = num1 % 10
sum = sum + r * r * r
num1 = Math.floor(num1 / 10)
}
if (num == sum) {
document.write('It is an Armstrong Number')
} else {
document.write('It is not an Armstrong Number')
}

我不知道你是怎么想的,所以我重写了一下。基本上,你要求在一个字符串中输入一个数字,split()将字符串放入一个数组,然后用forEach()循环遍历数组,用Math.pow():将每个字符作为一个数字加成三的幂

let num = prompt('Enter your number')
let sum = 0
let pow
num.split('').forEach(char => {
pow = Math.pow(parseInt(char), 3)
sum += pow
})
if (parseInt(num) === sum) {
document.write('It is an Armstrong Number')
} else {
document.write('It is not an Armstrong Number')
}

您的代码只检查3位数字,但在4位数字上失败(如8204(。我推荐以下代码;

let num = prompt('Enter your number')
let sum = 0
let power = num.length;
let pow
num.split('').forEach(char => {
pow = Math.pow(parseInt(char), power)
sum += pow
})
if (parseInt(num) === sum) {
document.write('It is an Armstrong Number')
} else {
document.write('It is not an Armstrong Number')
}

最新更新