上次整理过一篇《怎样实现大整数相加?》的文章,有兴趣的小伙伴可以先看一看。
那么,大整数相乘又是如何实现的呢?
问题:
如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的乘积呢?
分析:
我们同样可以像大数加法那样,用“列竖式”的方法来求解。
怎样列出这个乘法竖式呢?以 93281 X 2034 为例,竖式如下:
在程序中,我们可以利用int型数组,把两个大整数按位进行存储,再把数组中的元素像小学竖式那样逐个进行计算。
这个乘法竖式的计算过程可以大体分为两步:
1.整数B的每一个数位和整数A所有数位依次相乘,得到中间结果。
2.所有中间结果相加,得到最终结果。
代码如下:
/**
* 大整数求乘积
* @param bigNumberA 大整数A
* @param bigNumberB 大整数B
*/
public static String multiply(String bigNumberA, String bigNumberB) {
//1.把两个大整数用数组逆序存储,数组长度等于