`
chenyu.hz
  • 浏览: 139665 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

java简单实现大数相乘

    博客分类:
  • J2SE
 
阅读更多

面试的一道题 ,让我实现大数相乘的算法,晕倒。

 

 

package test;

import java.math.BigInteger;

public class BigNumberHandler {

	public int[] a = new int[100];

	public int[] b = new int[100];

	public BigNumberHandler() {
		initData(a);
		initData(b);
		print(a);
		print(b);
	}

	private void initData(int[] t) {
		for (int i = 0; i < t.length; i++) {
			t[i] = (int) (Math.random() * 10);
		}
	}

	private void print(int[] t) {
		for (int i = 0; i < t.length; i++) {
			System.out.print(t[t.length - i - 1]);
		}
		System.out.println("");
	}

	public void process() {

		int[] result = new int[a.length + b.length];
		
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < b.length; j++) {
				int number = b[j] * a[i];
				int index = i + j;
				result[index] += number;
			}
		}

		for (int i = 0; i < result.length - 1; i++) {
			int t = result[i];
			if (t > 9) {
				result[i + 1] += t / 10;
				result[i] = t - t / 10 * 10;
			}

		}

		print(result);

	}

	public static String getString(int[] t) {
		StringBuffer sBuffer = new StringBuffer();
		for (int i = 0; i < t.length; i++) {
			sBuffer.append(t[t.length - i - 1]);
		}
		return sBuffer.toString();
	}

	public static void main(String[] args) {
		BigNumberHandler t = new BigNumberHandler();
		t.process();
		
		
		BigInteger a = new BigInteger(getString(t.a));
		BigInteger b = new BigInteger(getString(t.b));
		System.out.println(a);
		System.out.println(b);

		System.out.println(a.multiply(b));
	}

}

 

分享到:
评论

相关推荐

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

    本文将深入探讨大数相乘的基本概念、算法以及其实现方法。 首先,我们要理解什么是大数。在大多数编程语言中,整型和浮点型变量都有其存储和运算的限制,例如32位整型最大只能表示到2^31 - 1,而浮点型也有其精度...

    java大数相乘代码

    java实现大数相乘,在不使用BigInteger工具方法的前提下进行大数相乘运算。

    java大数相乘(源代码)

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

    2021-11-22 C语言学习应用——用C语言实现大数相乘(csdn)————程序.pdf

    总结部分,作者提到虽然C语言实现大数相乘比较繁琐,需要自定义函数,但其他如C++、Java和Python等语言提供了更方便的库函数来处理大数。这个过程是学习和理解大数运算原理的好方法。 总之,这篇教程详细介绍了如何...

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

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

    大数相乘指数幂的实现

    大数相乘的基本算法有多种,其中最简单的是直接乘法,类似于小学数学中的竖式乘法,但效率较低。随着计算需求的提高,人们发展出了更高效的算法,如Karatsuba算法和Toom-Cook算法,这些算法利用分治策略将大数乘法...

    JAVA大数相乘

    "JAVA大数相乘"这个主题主要涉及到Java中的`BigInteger`类,它提供了对任意精度整数的支持,能够有效地处理大数运算,包括加法、减法、乘法、除法以及更复杂的数学操作。`BigInteger`类是Java标准库`java.math`包的...

    JAVA实现大整数相乘

    本篇将深入探讨如何利用Java实现两个大整数的相乘,尤其是面对1000位以上的数字时的高效算法。 首先,Java标准库提供了`java.math.BigInteger`类,它专门用于表示和操作任意大小的整数。`BigInteger`类支持所有基本...

    mul.zip_Mul(ti)住宅_mul的范围_大数相乘

    标题中的"mul.zip_Mul(ti)住宅_mul的范围_大数相乘"暗示了我们正在讨论一个涉及大整数乘法的场景,可能是一个软件或算法实现。在描述中提到,“数字比较大,相乘的结果超出了基本类型的表示范围,不能够直接做乘法...

    动态数组实现大数乘法

    两个大数相乘:利用数组实现,数组a存放大数1的每一位,数组b依次存放大数2的每一位。如:一大数1为3463546,则数组 a[]={3,4,6,3,5,4,6},大数2为:89019 则数组b[]={8,9,0,1,9},现在要大数1和大数2相乘,并按数位...

    java练习_大数运算_BigInteger.pdf

    Java大数运算 BigInteger 类的方法调用 正如我们在 Java 中处理大数运算时,需要使用 BigInteger 类来实现,这是因为 Java 的基本数据类型无法存储非常大的数字。BigInteger 类提供了几个重要的方法来进行大数运算...

    任意大的两个数相乘

    在实际编程中,处理大数相乘通常会用到特定的库,如Java的`BigInteger`类,Python的`int`类型(自动支持大数),或者C++的`GMP`库等。这些库提供了方便的API来进行大数运算,包括乘法。 例如,在Python中,我们可以...

    大数加法·乘法可以计算超长的数字

    1. **初始化:** 创建一个足够长的数组用于存储两个大数相乘的结果。 2. **逐位相乘:** 从最低位开始,逐位对两个大数进行相乘。 3. **进位处理:** 对于每次相乘的结果,如果其值大于等于10,则需要将其拆分为个位...

    Calculate.rar_大数

    `Calculate.java`文件可能是实现大数相乘的一个Java源代码文件。在这个程序中,可能包含了对`BigInteger`对象的操作,比如创建大数实例、两个大数的乘法运算,以及可能的错误处理和性能优化。`BigInteger`类的乘法...

    大数加减乘类的实现

    大数的乘法相对复杂一些,常见的算法有Karatsuba算法和Toom–Cook算法,这里我们可能采用了更基础的“学校乘法”方法,也就是将一个大数拆分为多个位,然后分别与另一个大数相乘,再将结果相加并适当调整位数。...

    java大数乘法的简单实现 浮点数乘法运算

    本文将详细介绍如何实现一个简单的Java大数乘法,包括浮点数的乘法运算。 首先,大数乘法的基本思想是将大数分解为单个数字,然后按照常规乘法规则逐位相乘。在Java中,我们可以使用字符串来存储这些大数,因为字符...

    大数实现的椭圆曲线(ECC)加解密算法

    在C++中实现ECC,首先要实现大数计算模块。大数运算包括加、减、乘、除以及模运算,这些在处理超过标准整型范围的大数时是必需的。可以使用动态分配的数组来存储大数,然后设计相应的算法来处理这些操作。例如,可以...

    关于大数的运算,有详细的注释和讲解,用C语言实现

    5. **大数乘法实现**:通过嵌套循环来实现两个大数相乘,外层循环遍历第一个大数的每一位,内层循环遍历第二个大数的每一位。每次迭代将对应位的乘积累加到结果的对应位上,并处理进位。 ```c bigfloat b_c...

Global site tag (gtag.js) - Google Analytics