Sometimes one takes on problems not for their practical purposes, but just for the sake of solving it. Since there is a limit on the number of digits that can be represented in a language like Javascript, I wanted to compute the actual output for two to a very large exponent.
One effective means of doing so is to compute 2^n and store the resulting digits in a list. The Javascript below completes this action:
var math = require('mathjs'); var log = console.log; var sum = function(as) { var cc = 0; for(ii in as) { cc += as[ii]; } return cc; }; var power = function(base, k) { var output = [base]; var temp = []; var init = 1; var index = 0; while(init < k) { for(ii in output) { output[ii] *= 2; } if(output.length === 1 && output[0] >= 10) { output.push(1); output[0] = output[0] + ''; temp = output[0].split("")[1]; output[0] = Number(temp); } if(output.length === 2) { if(output[0] >= 10) { output[1] += 1; output[0] = output[0] + ''; temp = output[0].split("")[1]; output[0] = Number(temp); } if(output[1] >= 10) { output.push(1); output[1] = output[1] + ''; temp = output[1].split("")[1]; output[1] = Number(temp); } } if(output.length > 2) { for(ii=0; ii <= (output.length - 2); ii++){ if(output[ii] >= 10) { output[ii+1] += 1; output[ii] = output[ii] + ''; temp = output[ii].split("")[1]; output[ii] = Number(temp); } } index = output.length - 1; if(output[index] >= 10) { output[index] = output[index] + ''; temp = output[index].split("")[1]; output[index] = Number(temp); output.push(1); } } init += 1; } return output; } var agg = function(as) { var output = as[as.length - 1].toString(); for(ii = (as.length - 2); ii >= 0; ii--) { as[ii] = as[ii].toString() output = output + as[ii]; } return output; };
Using this script, we can compute 2^8888 (output in image) which has a digit sum of 12055.