阿姆斯特朗的一些javascript

时间:2017-08-31 16:48:46

标签: javascript

我需要知道输入的号码是否是阿姆斯特朗号码,但我的代码不适用于每个号码。让我知道我错过了什么。还有其他方法吗?

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>

9 个答案:

答案 0 :(得分:2)

我认为你计算结果的方式是错误的。根据维基百科,阿姆斯特朗的号码,也称为自恋号码,具有以下特性:

  

[阿姆斯特朗号码]是一个数字,它是自己的数字之和,每个数字都是数字的幂。

您可以像这样计算:

&#13;
&#13;
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;
&#13;
&#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>