大数乘法

大数乘法:

public class BigNumberMulti {  
    public static void main(String[] args) {  
        String num1Str = "24566";  
        String num2Str = "452053";  
        int[] num1 = new int[num1Str.length()];  
        int[] num2 = new int[num2Str.length()];  
        //将字符串转换为整数数组,注意,24566应转化成{6,6,5,4,2}  
        for(int i = 0; i < num1Str.length();i++) {  
            num1[num1Str.length() -1- i] = num1Str.charAt(i)-'0';  
        }  
        for(int i = 0; i < num2Str.length();i++) {  
            num2[num2Str.length() -1- i] = num2Str.charAt(i)-'0';  
        }  
        int[] result = multiply(num1, num2);  
        for(int i = result.length-1; i>=0;i--){  
            System.out.print(result[i]);  
        }  
    }  
  
    public static int[] multiply(int[] num1, int[] num2) {  
        int lengthOfNum1 = num1.length;  
        int lengthOfNum2 = num2.length;  
        // 分配一个空间,用来存储运算的结果,n1长的数* n2长的数,结果不会超过n1+n2长  
        int[] result = new int[lengthOfNum1 + lengthOfNum2];  
        // 先不考虑进位问题,根据小学竖式的乘法运算,n1的第i位与n2的第j位相乘,结果应该存放在结果的第i+j位上  
        for (int i = 0; i < lengthOfNum1; i++) {  
            for (int j = 0; j < lengthOfNum2; j++) {  
                result[i + j] += num1[i] * num2[j];  
            }  
        }  
        // 单独处理进位问题  
        for (int i = 0; i < lengthOfNum1 + lengthOfNum2 -1; i++) {  
            if (result[i] > 10) {  
                result[i + 1] += result[i] / 10;  
                result[i] %= 10;  
            }  
        }  
          
        return result;  
  
    }  
}  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大数乘法的算法 大数乘法的关键在于如何用字符串来模拟大数乘法。方法有如下几种:模拟普通的手算乘法、利用代数方法优化...
    胡哈哈哈阅读 2,032评论 0 0
  • 普通大数乘法 普通大数乘法模拟两个数字竖式相乘,为了方便操作,数字的个位在数组的第0位,时间复杂度为O ( n² ...
    Gitfan阅读 973评论 0 0
  • 近日参加一个笔试,遇到大数乘法问题,这是一个经典的算法题。所谓大数乘法问题其实就是这样的:输入两个整数,要求输出这...
    拉普拉斯妖kk阅读 3,149评论 0 2
  • 1、大数乘法 (1)转换并反转,字符串转换为数字并将字序反转; (2)自动移位,逐位相乘,添加最后的进位; (3)...
    saviochen阅读 563评论 0 2
  • 算法爬坑之线性表大数乘法 include<iostream> include<memory.h> include<...
    编码的哲哲阅读 458评论 0 4