Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get integer in Math.pow(10, 10000000)

I always get infinity from:

let power = Math.pow(2, 10000000);
console.log(power); //Infinity

So, can I get integer from this? Maybe I don't understand this task https://www.codewars.com/kata/5511b2f550906349a70004e1/train/javascript? Who knows, show me how to decide that?

like image 296
UlanZhusupov Avatar asked Oct 29 '25 07:10

UlanZhusupov


1 Answers

The link that you give asks for the last digit of the number. In order to find such a thing, it would be insane to compute an extremely large number (which might exceed the storage capacity of the known universe to write down (*)) just to find the final digit. Work mod 10.

Two observations:

1) n^e % 10 === d^e % 10 // d = last digit of n
2) If e = 10q+r then n^e % 10 === (n^10)^q * n^d %10

This allows us to write:

const lastDigit = function(str1, str2){
  //in the following helper function d is an integer and exp a string
  const lastDigitHelper = function(d,exp){
    if(exp.length === 1){
      let e = parseInt(exp);
      return Math.pow(d,e) % 10;
    } else {
      let r = parseInt(exp.slice(-1));
      let q = exp.slice(0,-1);
      return lastDigitHelper(Math.pow(d,10) % 10,q) * Math.pow(d,r) % 10;
    }
  }

  let d = parseInt(str1.slice(-1));
  return lastDigitHelper(d,str2);
}

This passes all of the tests, but isn't as efficient as it could be. The recursive helper function could be replaced by a loop.

(*) For fun: one of the test cases was to compute the last digit of

1606938044258990275541962092341162602522202993782792835301376 ^ 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397376

If written in base 2, this number would be approximately 4.07 x 10^92 bits long. Since there are fewer than that many atoms in the universe, the number is much too large to store, not to mention too time consuming to compute.

like image 159
John Coleman Avatar answered Oct 31 '25 12:10

John Coleman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!