JS实现大数(整数)相乘
来源:互联网 发布:新手如何经营淘宝网店 编辑:程序博客网 时间:2024/05/17 06:56
大数,即超出语言所能表示的数字最大范围的数字,此时的数字只能用字符串来表示。那么如何实现两个大数相乘呢?我用JS实现了一下,代码如下:
console.log(bigMut("567", "1234")); // 699678function bigMut(big, common) {big += "";common += "";if (big.length < common.length) {big = [common, common = big][0];}big = big.split("").reverse();var oneMutManyRes = [];var i = 0,len = big.length;for (; i < len; i++) {oneMutManyRes[oneMutManyRes.length] = oneMutMany(big[i], common) + getLenZero(i);}var result = oneMutManyRes[0];for (i = 1, len = oneMutManyRes.length; i < len; i++) {result = bigNumAdd(result, oneMutManyRes[i]);}return result;}function getLenZero(len) {len += 1;var ary = [];ary.length = len;return ary.join("0");}function oneMutMany(one, many) {one += "";many += "";if (one.length != 1) {one = [many, many = one][0];}one = parseInt(one, 10);var i = 0,len = many.length,resAry = [],addTo = 0,curItem,curRes,toSave;many = many.split("").reverse();for (; i <= len; i++) {curItem = parseInt(many[i] || 0, 10);curRes = curItem * one + addTo;toSave = curRes % 10;addTo = (curRes - curRes % 10) / 10;resAry.unshift(toSave);}if (resAry[0] == 0) {resAry.splice(0, 1);}return resAry.join("");}function bigNumAdd(big, common) {big += "";common += "";var maxLen = Math.max(big.length, common.length),bAry = big.split("").reverse(),cAry = common.split("").reverse(),i = 0,addToNext = 0,resAry = [],fn,sn,sum;for (; i <= maxLen; i++) {fn = parseInt(bAry[i] || 0);sn = parseInt(cAry[i] || 0);sum = fn + sn + addToNext;addToNext = (sum - sum % 10) / 10;resAry.unshift(sum % 10);}if (resAry[0] == 0) {resAry.splice(0, 1);}return resAry.join("");}
0 0
- JS实现大数(整数)相乘
- JS实现两个大数(整数)相乘 实例代码
- 整数的大数相乘
- 整数大数相乘
- C 语言 实现大数相乘问题(包括正、负整数,另外还附有详细注释)
- 两个整数的大数相乘
- 大数相乘的算法实现(C#)
- 大数算法 -- 正整数相乘(Java 实现)
- 大数相乘(n阶乘实现)
- 大数相乘问题(Java实现)
- 俩个大数相乘(java实现)
- 关于大数相乘问题(Java实现)
- 数组实现大数相乘
- 实现两个大数相乘
- python实现大数相乘
- 大数相乘 C++实现
- C++ 实现大数相乘
- 大数相乘算法实现
- JBPM工作流
- C++回文的实现代码
- javaweb中使用Listener监听器
- zookeeper基本原理
- FZU2171 防守阵地 II (线段树)
- JS实现大数(整数)相乘
- 在String.xml中使用特殊符号
- oracle11g数据库如何正确导入dmp文件数据
- 怎样改变Tooltip的大小
- linux fork 深入讲解(对打开文件的处理)
- Python核心编程第十章笔记
- 课程设计
- mysql 根据select结果进行循环操作,并写入临时表
- zookeeper python接口