大整数相乘算法
来源:互联网 发布:简述osi七层网络模型 编辑:程序博客网 时间:2024/05/16 14:53
- package cn.bigint;
- import java.io.IOException;
- public class BigInts {
- public String BigIntAdd(String s1, String s2) throws IOException {
- IntString intt1 = new IntString();
- String str = "";
- IntString intt2 = new IntString();
- intt1.digits = convert(s1);
- intt1.len = s1.length();
- intt2.digits = convert(s2);
- intt2.len = s2.length();
- int[] a = intt1.digits;
- int[] b = intt2.digits;
- int alength = intt1.len;
- int blength = intt2.len;
- IntString intt3 = new IntString();
- intt3.len = (alength + blength);
- int clength = intt3.len;
- int[] c = new int[clength];
- for (int i = 0; i < alength; ++i) {
- for (int j = 0; j < blength; ++j) {
- c[(i + j)] += a[i] * b[j];
- }
- }
- for (int i = 0; i < c.length; ++i) {
- if (c[i] > 9) {
- c[(i + 1)] += c[i] / 10;
- c[i] %= 10;
- }
- }
- intt3.digits = c;
- clength = intt3.len;
- if (c[(clength - 1)] ==0)
- --clength;
- for (int i = clength -1; i >= 0; --i) {
- str = str + String.valueOf(c[i]);
- }
- return str;
- }
- public static int[] convert(String str) {
- int length = str.length();
- int[] t = new int[length];
- for (int i = 0; i < str.length(); ++i) {
- t[i] = (str.charAt(length - i - 1) - '0');
- }
- return t;
- }
- class IntString {
- public int len;
- public int[] digits;
- public IntString() {
- this.len = 0;
- this.digits = null;
- }
- }