1. 程式人生 > >倆個大數相乘(java實現)

倆個大數相乘(java實現)

package com.example;

/**
 *
 * @author ZHANGHAOHAO089
 * @date 2017/6/27
 */

public class BigNumber {

    public static void main(String args[]) {
        String str1 = "121255";
        String str2 = "23545";
        char[] data1 = str1.toCharArray();
        char[] data2 = str2.toCharArray();
        convert(data1);
        convert(data2);
        multiply(data1, data2);
    }

    //高低位對調
public static void convert(char data[]) { int len = data.length; for (int i = 0; i < len / 2; i++) { char num = data[len - i - 1]; data[len - i - 1] = data[i]; data[i] = num; } } public static void multiply(char[] x, char[] y) { int
lenX = x.length; int lenY = y.length; int[] sum = new int[lenX + lenY + 3];//最多是這個位數 //對sum賦值 for (int i = 0; i < sum.length; i++) { sum[i] = 0; } for (int i = 0; i < lenX; i++) { for (int j = 0; j < lenY; j++) { sum[i + j] += Integer.parseInt(String.valueOf(x[i])) * Integer.parseInt(String.valueOf(y[j])); } } //高低位進階
for (int m = 0; m < sum.length; m++) { int number = sum[m] / 10; if (number > 0) { sum[m] = sum[m] % 10; sum[m + 1] += number; } } //列印 int index = 0; for (int n = sum.length - 1; n > 0; n--) { if (sum[n] > 0) { index = n; break; } } for (int m = index; m >= 0; m--) { System.out.print(sum[m]); } } }

核心就是轉化為陣列來實現相乘,而且sum[i+j]的數是關鍵