(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));
})();
分享到:
相关推荐
两个大数相乘-字符串实现两个大数相乘-字符串实现
一个简单的大数相乘的程序,复杂度O(n平方)。
两大数相乘,算法,数组,C语言.。。。。。。
实现了两个大数相乘的小程序,数组大小可自行指定,欢迎大家进行验证
C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。
通过汇编语言实现大数相乘,作业,调试成功
20位左右的大数相乘算法解析,用一个整型数组表示一个大数,数组的每个元素储存大数的一位数字,则实际的大数d表示为: d=a[k]*10的k-1次幂+a[k-1]*10的...(2),实现两个大数相乘. (3),再此基础上实现两个大数相除
在实际的大型的数学相乘运算中,往往数字的位数较多,造成一般计算器乃至科学计算器都无法完成计算,为科学研究和事业带来一定的麻烦,因此为了解决这种普通的计算设备所完成不了的计算,就设计了这个大数相乘程序,...
分享一下用C/C++实现的大数相加和大数相乘,可以拿来当工具用。
大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码...
大数相乘大数相乘大数相乘大数相乘大数相乘
大数相乘算法,用CSharp实现,经过测试,应该没错了
大数相乘,算法源码分析,以及相关的实现
用数组进行大数相乘,解决超整形的大数相乘
普通的整数用64bit来表示,大约是4*(1000)^6,即4*10^18,也就说能实现最大数为18位的十进制数相乘。如果要实现100或更多位十进制相乘,怎么办呢?这个资源解决了这个问题。
大数相乘解决无限位数相乘问题,可以解决工程问题中无限复杂数据相乘难题
大数相乘指数幂的实现 大数相乘指数幂的实现 大数相乘指数幂的实现
本程序可以求出:任意位的两个大数相乘的结果。 已经实验过>2000位的两数相乘,有兴趣的话,你也试一试吧。 support me!thanks!
两个超过计算机所能表示的数相乘,利用数组存储大数,进行相乘
快速排序算法和任意两个大数阶乘相乘算法的汇编实现,可以对你任意输入的数进行快速排序,对你任意输入数的阶乘进行求解