java简单实现大数相乘
面试的一道题 ,让我实现大数相乘的算法,晕倒。
?
?
package test;import java.math.BigInteger;public class BigNumberHandler {public int[] a = new int[100];public int[] b = new int[100];public BigNumberHandler() {initData(a);initData(b);print(a);print(b);}private void initData(int[] t) {for (int i = 0; i < t.length; i++) {t[i] = (int) (Math.random() * 10);}}private void print(int[] t) {for (int i = 0; i < t.length; i++) {System.out.print(t[t.length - i - 1]);}System.out.println("");}public void process() {int[] result = new int[a.length + b.length];for (int i = 0; i < a.length; i++) {for (int j = 0; j < b.length; j++) {int number = b[j] * a[i];int index = i + j;result[index] += number;}}for (int i = 0; i < result.length - 1; i++) {int t = result[i];if (t > 9) {result[i + 1] += t / 10;result[i] = t - t / 10 * 10;}}print(result);}public static String getString(int[] t) {StringBuffer sBuffer = new StringBuffer();for (int i = 0; i < t.length; i++) {sBuffer.append(t[t.length - i - 1]);}return sBuffer.toString();}public static void main(String[] args) {BigNumberHandler t = new BigNumberHandler();t.process();BigInteger a = new BigInteger(getString(t.a));BigInteger b = new BigInteger(getString(t.b));System.out.println(a);System.out.println(b);System.out.println(a.multiply(b));}}?