package org.iSun.heisedeyueya;
public class BigIntegerMultiply {
public static void main(String args[]) {
String s1 = "51212126";
String s2 = "22434565";
System.out.println(51212126L * 22434565L);
bigIntegerMultiply(s1, s2);
}
public static void bigIntegerMultiply(String a, String b) {
char[] c1 = a.toCharArray();
char[] c2 = b.toCharArray();
int[] integer1 = new int[c1.length];
int[] integer2 = new int[c2.length];
// 将字符转换成int类型
for (int i = 0; i < c1.length; i++) {
integer1[i] = c1[i] - 48;
}
for (int i = 0; i < c2.length; i++) {
integer2[i] = c2[i] - 48;
}
// 存放结果的数组
int[] result = new int[integer1.length + integer2.length];
// 每一轮计算中个位的偏移量
int offset = 0;
// 乘数的个位到高位顺序取出
for (int i = integer2.length - 1; i >= 0; i--) {
// 这一轮乘积的个位数的位置
int index = offset;
// 进位
int count = 0;
// 模数
int mod = 0;
// 被乘数的个位到高位顺序取出
for (int j = integer1.length - 1; j >= 0; j--) {
// 乘积加上上一轮的进位
int temp = integer2[i] * integer1[j] + count;
// 求模数
mod = temp % 10;
// 求进位
count = temp / 10;
// 这一轮的模数与本为对其的位求和
result[result.length - 1 - index] = mod
+ result[result.length - 1 - index];
// 求和之后可能进位位的值可能改变,刷新进位位的值
count = count + result[result.length - 1 - index] / 10;
// 将新的模数填入到相应的位
result[result.length - 1 - index] = (result[result.length - 1
- index]) % 10;
index++;
}
// 本轮计算完成将进位位直接填入到当前的位置
result[result.length - 1 - index] = count;
// 偏移量加
offset++;
}
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
}
}
}
分享到:
相关推荐
关于大整数乘法的复杂度分析和选择最优的数学公式
大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码
设计二进制的大整数乘法,要求利用分治的思想编写递归算法,并可以实现多位数(位数n是2的整数幂)的乘法(利用数组实现),给出程序的正确运行结果。
大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法...
大整数乘法
利用字符串和分治法来实现大整数乘法,内含c++源代码和实验报告说明
大整数乘法(分治法)实验报告,包括问题描述、问题分析、复杂度分析、源代码以及运行结果截图,100%可以运行。
大整数乘法的分治法实现,编程语言使用C++.doc
分治思想大整数乘法 基于王晓东版 算法设计与分析
此课件是为了我的博客中写的那篇利用分治法实现大整数乘法而为大家上传的预习课件,感兴趣的朋友可以到我的CSDN博客(http://blog.csdn.net/zhanghua1816)算法设计与分析模块查看完整的利用分治法实现大整数乘法的...
大整数乘法 数据结构 算法 精度 硬件限制。
自己编写的大整数乘法,可以处理任意大的两个数相乘。C语言编写,仅供参考。
为了实现大整数乘法实现了BigNumber类,通过重载左右移位、加减运算符最后实现了乘法运算符的重载,完成了分治法对大整数乘法的解决!
已 AC HDU 1402,利用fft算法实现大整数乘法
采用数组实现的200位大整数的乘法,代码十分简洁,不到100行。对c语言学习很有帮助~
对算法分析与设计课程中大整数乘法的实现,并实现不同位数的大整数相乘
本程序利用数据结构中分而治之法求解大整数乘法的问题。LargeIntegerMulti_algorithm