您的位置:首页 > 编程语言 > Java开发

俩个大数相乘(java实现)

2017-06-27 11:25 375 查看
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
> 0) {
index = n;
break;
}
}

for (int m = index; m >= 0; m--) {
System.out.print(sum[m]);
}
}
}


核心就是转化为数组来实现相乘,而且sum[i+j]的数是关键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: