俩个大数相乘(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]的数是关键
相关文章推荐
- java中用ArrayList类实现正整数大数相加与相乘
- Java实现大数相乘
- Java实现两个大数相乘
- 关于大数相乘问题(Java实现)
- Java实现大数相加、相乘(不使用BigInteger)
- 大数相乘问题--算法思想及Java实现解析(附详细注释)
- 大数算法 -- 正整数相乘(Java 实现)
- python实现大数相乘
- 两个大数相乘(纯C实现)
- 大数相乘 (JAVA版)
- 大数相乘的一种实现
- 实现两个大数相乘
- Java大数乘法的简单实现(整数和浮点数的乘法)
- Java笔试题:两个大数相乘
- java实现两个大数相加,可能出现溢出错误
- 两个大数相乘的C++实现
- java实现大数相加
- 大数相乘的算法实现(C#)
- Java处理两个大数相乘
- 大数相乘的C++实现