(function (){ var addLarge = function(n1,n2){ var carry = 0; var ret = ""; n1=n1.toString(); n2=n2.toString(); var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--) { var di = parseInt(sln1[i-1]); var dj = parseInt(sln2[i-1]); ret = (carry + di + dj)>= 10 ? ((carry + di + dj) - 10 + ret) : ((carry+di+dj) + ret); carry = ((carry + di + dj) /10 ) | 0; } if(n1.length != n2.length) { if(n1.length > n2.length){ ret = addLarge(n1.substr(0,n1.length-len),carry.toString()) + ret; } else{ ret = addLarge(n2.substr(0,n2.length - len),carry.toString()) + ret; } return ret; } else{ if(carry> 0){ ret = carry+ ret; } return ret.toString(); } }; var multiply = function(n1,n2){ var nstr1 = n1.toString(); var nstr2 = n2.toString(); var carry = 0; var ret = ""; var di = 0; var dj = 0; var dig = ""; for(var i = nstr1.length - 1 ;i >= 0;i--) { var tmp = ""; var di = parseInt(nstr1[i]) ; for(var j = nstr2.length - 1;j >= 0;j--) { var dj = parseInt(nstr2[j]); var r = di*dj + carry; if(r >= 10) { carry =(r / 10) | 0; tmp = (r%10) + tmp; }else{ carry=0; tmp = r + tmp; } } if(carry > 0){ tmp = carry.toString() + tmp; carry = 0; } if(i < nstr1.length -1) { ret = addLarge (ret ,tmp + dig); } else{ ret = tmp; } dig += "0"; } return ret; }; var a = "1543843275857859592482498432243255"; var b = "1554335546546546662"; console.log(multiply(a,b)); console.log(parseInt(a)*parseInt(b)); })();
两大数相乘 -- javascript 实现
原创mb61c46a7ab1eee ©著作权
文章标签 javascript 文章分类 JavaScript 前端开发
上一篇:javascript之事件处理
-
【ArkTS】鸿蒙开发 比较两个数的大小 用户界面输入两个数并输出较大数
【HarmonyOS】 鸿蒙开发 (比较两个值大小,输出较大值)在DevEco Studio中开发,用户界面输入两个值,比较两个值大小并输出较大值。主要是练习了对TextInput属性的应用。
鸿蒙开发 TextInput属性 用户界面输入 两个值比较大小 ArkTS -
大数相乘 (模板)
输入两个不超过200位的大数,输出它们的积输入样例
#include i++ ios