首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java容易实现大数相乘

2012-10-08 
java简单实现大数相乘面试的一道题 ,让我实现大数相乘的算法,晕倒。??package testimport java.math.BigIn

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));}}

?

热点排行