`
apprentice_ll26
  • 浏览: 26954 次
  • 性别: 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;

}

}
分享到:
评论

相关推荐

    大数相乘,算法源码分析及实现

    在计算机科学中,大数相乘是...总的来说,理解和实现大数相乘算法不仅有助于提升计算效率,也是深入理解计算机科学底层机制的关键步骤。通过源码分析,我们可以更好地了解算法的工作原理,并优化其在特定环境下的性能。

    两个大数相乘算法

    大数相乘算法是基础且关键的一环,它涉及到如何高效地计算两个超过普通整型变量所能表示范围的数的乘积。本主题将深入探讨如何用C语言实现大数相乘,并展示结果。 C语言本身并不直接支持大数运算,但我们可以自定义...

    大数相乘算法c语言

    在计算机科学中,大数相乘是处理超过标准整型数据范围的数字乘法问题。在C语言中,由于标准库并不直接支持大数运算,...通过理解这些概念,你可以根据提供的“大数相乘算法”文件进一步学习和实现自己的大数相乘程序。

    C/C++实现两个大数相乘源代码

    C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。

    用C语言实现两大数相乘

    两大数相乘,算法,数组,C语言.。。。。。。

    大数相乘算法,java代码,包含独立大数相加算法

    大数相乘算法,java代码,包含独立大数相加算法 其中bigNumberPlus(String s1,String s2)为大数相加方法 bigNumberMultiply(String s1,String s2)为大数相乘方法

    利用分治法设计一个计算两个n位的大整数相乘的算法,要求计算时间低于O(n2)。

    利用分治法设计一个计算两个n位的大整数相乘的算法,要求计算时间低于O(n2)。支持不同位数大数的相乘。

    大数相乘算法解析,实现20位的大数相乘

    虽然这里仅实现了大数的乘法,但基于相同的思想,可以扩展实现两个大数的相除操作。通常,大数相除需要更复杂的算法,如长除法,这涉及到多次减法、取余和商的计算。 总结来说,大数相乘算法主要涉及数组的使用、位...

    大数相乘的C语言实现程序

    实现了两个大数相乘的小程序,数组大小可自行指定,欢迎大家进行验证

    两个大数相乘-字符串实现

    两个大数相乘-字符串实现两个大数相乘-字符串实现

    大数相乘算法,用CSharp实现

    大数相乘算法,用CSharp实现,经过测试,应该没错了

    三个不同大数相乘算法源代码

    大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码大数相乘算法源代码...

    大数相乘c语言

    标题“大数相乘c语言”和描述“两个超过计算机所能表示的数相乘,利用数组存储大数,进行相乘”所提及的就是这种技术。 大数相乘的基本思路是将每个大数拆分成数组中的每一位,然后按照传统的笔算乘法方法进行计算...

    大数相乘解决无限位数相乘问题

    其中,Karatsuba算法是一种分治策略,它将两个数分别拆分为较小的部分,然后利用递归关系进行计算,时间复杂度为O(n^1.585)。Toom-Cook算法则是在Karatsuba基础上的扩展,适用于更多个数的相乘。而FFT算法则是通过...

    C++实现大数相乘的算法

    这样,我们就实现了一个简单但功能完整的大数相乘算法,能够处理任意长度的字符串表示的大数相乘问题。 这种基于字符串的大数乘法算法虽然直观易懂,但在效率上可能不如Karatsuba或者更高级的算法如FFT(快速傅里叶...

    汇编之大数相乘

    通过汇编语言实现大数相乘,作业,调试成功

    大数相乘_大数相乘_python_分治_

    虽然Python内置的乘法运算可能已经足够快,但对于特定场景,例如在性能受限的设备上或需要优化计算时间的场合,自定义的大数相乘算法如Karatsuba算法可能会提供显著的优势。 总的来说,理解并掌握大数相乘的分治...

    大数运算 大数相加 大数相乘

    大数相乘的实现相对复杂一些,常见的方法有Karatsuba算法、Toom-Cook算法或更高效的FFT(快速傅里叶变换)方法。这里我们简述一种朴素的算法——扩展的乘法法则,也就是将大数拆分为单个位,然后按位相乘并累加。 1...

    用C实现两个大数的相乘(位数可以上万)

    本文将详细介绍如何使用C语言通过链表和数组实现两个大数的相乘功能,其中大数的位数可以达到上万位。 #### 题目概述 本题目要求设计一个程序,能够处理两个大数的相乘操作,这里的“大数”指的是位数可以达到上万...

    java大数相乘(源代码)

    本程序可以求出:任意位的两个大数相乘的结果。 已经实验过&gt;2000位的两数相乘,有兴趣的话,你也试一试吧。 support me!thanks!

Global site tag (gtag.js) - Google Analytics