我需要知道输入的号码是否是阿姆斯特朗号码,但我的代码不适用于每个号码。让我知道我错过了什么。还有其他方法吗?
var e, x, d = 0;
var b = prompt("Enter a number");
x=b;
while (x > 0) {
e = x % 10;
x = parseInt(x/10);
d = d + (e*e*e);
}
if (b==d)
alert("given number is an armstrong number");
else
alert("given number is not an armstrong number");
<!DOCTYPE HTML>
<html>
<head>
<title>Armstrong</title>
</head>
<body>
</body>
</html>
答案 0 :(得分:2)
我认为你计算结果的方式是错误的。根据维基百科,阿姆斯特朗的号码,也称为自恋号码,具有以下特性:
[阿姆斯特朗号码]是一个数字,它是自己的数字之和,每个数字都是数字的幂。
您可以像这样计算:
tst1 <- data.frame(
len = c(1.00, 1.038219, 1.040130, 1.078980, 1.186618 ),
pm25=c("<8", "8-10","10-12", "12-20","20+"))
plottst1 <- ggplot(tst1, aes(x=factor(pm25), y=len))
plottst1
&#13;
答案 1 :(得分:1)
这里是无需使用数学对象即可检查Armstrong编号的解决方案。
function armstrongNum(number) {
const numberArr = String(number).split('');
const power = numberArr.length;
let TotalSum = numberArr.reduce((acc, cur) => {
return acc + (function(cur,power){
let curNum = Number(cur);
let product = 1;
while(power > 0) {
product *= curNum;
power --;
}
return product;
}(cur,power))
}, 0)
if (TotalSum === number) {
return true
}
return false
}
armstrongNum(153);
答案 2 :(得分:0)
<script>
function execute() {
var num1 = document.getElementById("Number1").value;
var num2 = document.getElementById("Number2").value;
var num3 = document.getElementById("Number3").value;
var concatNum = num1 + num2 + num3;
var num1Sqrt = num1 * num1 * num1;
var num2Sqrt = num2 * num2 * num2;
var num3Sqrt = num3 * num3 * num3;
if (num1Sqrt + num2Sqrt + num3Sqrt == concatNum) {
Answer.value = "The three integers you entered are Armstrong numbers.";
}
if (num1Sqrt + num2Sqrt + num3Sqrt != concatNum) {
Answer.value = "The three integers you entered are not Armstrong numbers.";
}
}
</script>
首先将变量设置为输入的内容,然后将字符串与三个整数连接起来。
然后将三个整数平方并将每个值设置为变量。然后你有一个基本的相等检查,如果三个平方值加起来你的连接字符串然后你有一个阿姆斯特朗号。
答案 3 :(得分:0)
这就是我解决我问题的方法:
function armstrong(num) {
var digits = num.toString().split('')
var realDigits = num
var a = 0
for (let i = 0; i < digits.length; i++){
digits[i] = Math.pow(digits[i], digits.length)
a += digits[i]
}
if (a == realDigits) {
console.log("Number is armstrong")
} else if (a != realDigits) {
console.log("Number is not armstrong")
}
}
armstrong(371)
//feel free to pass any value here
您可以在https://www.typescriptlang.org/play/
复制/粘贴并运行此代码我希望这对某人有帮助。
答案 4 :(得分:0)
您可以尝试这种方法,非常容易理解。
const armstrongNumber = (num) => {
const toArray = num.toString().split('').map(Number);
const newNum = toArray.map(a => {return a**3}).reduce((a, b) => a + b);
if(newNum == num){
console.log('This is an armstrong number');
}else{
console.log('This is not an armstrong number');
}
}
armstrong(370);
//This is an armstrong number
答案 5 :(得分:0)
这也可以。
function isArmstrong (n) {
const res = parseInt(n, 10) === String(n)
.split('')
.reduce((sum, n) => parseInt(sum, 10) + n ** 3, 0);
console.log(n, 'is', res, 'Armstrong number')
return res
}
isArmstrong(153)
答案 6 :(得分:0)
这是另一种解决方法。
o->f = [=]()
{
std::cout << uMap[o] << '\n';
};
答案 7 :(得分:0)
找到阿姆斯特朗的正确方法
var e, x, d = 0, size;
var b = prompt("Enter a number");
b=parseInt(b);
x=b;
size = x.toString().length;
while (x > 0) {
e = x % 10;
d = d + Math.pow(e,size);
x = parseInt(x/10);
}
答案 8 :(得分:-3)
你可以试试这个,愿这个帮助你:
<!DOCTYPE HTML>
<html>
<head>
<title>Armstrong</title>
</head>
<body>
</body>
</html>
<script>
var z,e,x,d=0;
var b=prompt("Enter a number");
x=parseInt(b);
while(x>0) //Here is the mistake
{
e=x%10;
x=parseInt(x/10);
d=d+(e*e*e);
console.log("d: "+d+" e: "+e);
}
if(parseInt(b)==d){
alert("given no is amstrong number");
}
else {
alert("given no is not an amstrong number");
}
</script>