`
apprentice_ll26
  • 浏览: 25981 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

计算两个大数相乘的Java算法实现(ZZ)

阅读更多
1.IntString类:
package hi.baidu;


class IntString {

public int len;

public int[] digits;


public IntString(){

     len = 0;

     digits = null;

}

}


2.BigInt类:

public class BigInt {

public BigInt() {}

public static void main(String[] args) throws java.io.IOException {

    System.out.println("Input two large integers:");

    IntString intt1 = new IntString();

    IntString intt2 = new IntString();

       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


    String str[] = (reader.readLine()).split("\\s+");

    intt1.digits = convert(str[0]);

    intt1.len = str[0].length();

    intt2.digits = convert(str[1]);

    ntt2.len = str[1].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-1;

    int clength = intt3.len;

    int[] c= new int[1000];


    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] = c[i]%10;

       }

    }


    intt3.digits = c;

    clength= intt3.len;

    System.out.println(clength);

    System.out.println("the result is: ");

    for(int i=clength-1;i>=0;i--){

       System.out.print(c[i]);

    }

}




//将字符串逆序

public static int[] convert(String str) {

int length = str.length();

int[] tem = new int[length];

for(int i=0;i<str.length();i++) {

     tem[i] = str.charAt(length-i-1)-'0';

}

    return tem;

}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics