昨天网上看到一面试题,求大数相乘,一时手痒就敲了下,实现语言是java,虽然java.math.BigDecimal可以实现,但我还是喜欢自己敲:)
代码如下:
import java.util.Scanner;
public class Multiply
{
public String mul(String str1,String str2)
{
StringBuffer bstr=new StringBuffer();
int i=0,j=0;
for(i=0;i<str1.length()+str2.length();i++)
{
bstr.append('0');
}
int k=bstr.length()-1,add=0,temp=0;
for(j=str2.length()-1;j>=0;j--)
{
if(str2.charAt(j)!='0')
{
for(i=str1.length()-1;i>=0;i--)
{
k=i+j+1;
temp=(str2.charAt(j)-'0')*(str1.charAt(i)-'0')+(bstr.charAt(k)-'0');
bstr.setCharAt(k--, (char)('0'+temp%10));
add=temp/10;
while(add!=0)
{
temp=add+bstr.charAt(k)-'0';
bstr.setCharAt(k--, (char)('0'+temp%10));
add=temp/10;
}
}
}
}
return bstr.substring(firstNotZeroIndex(bstr));
}
private int firstNotZeroIndex(StringBuffer str)
{
for(int i=0;i<str.length();i++)
if(str.charAt(i)!='0')
return i;
return str.length()-1;
}
public static void main(String[] args)
{
Multiply mul=new Multiply();
Scanner cin=new Scanner(System.in);
System.out.print("请输入第一个整数:");
String str1=cin.next();
System.out.print("请输入第二个整数:");
String str2=cin.next();
System.out.print("结果是:");
System.out.println(mul.mul(str1, str2));
}
}
分享到:
相关推荐
本程序可以求出:任意位的两个大数相乘的结果。 已经实验过>2000位的两数相乘,有兴趣的话,你也试一试吧。 support me!thanks!
java实现大数相乘,在不使用BigInteger工具方法的前提下进行大数相乘运算。
"JAVA大数相乘"这个主题主要涉及到Java中的`BigInteger`类,它提供了对任意精度整数的支持,能够有效地处理大数运算,包括加法、减法、乘法、除法以及更复杂的数学操作。`BigInteger`类是Java标准库`java.math`包的...
在计算机科学领域,大数相乘是处理超过标准整型或浮点型变量所能表示的数值范围时必须面对的问题。这种技术广泛应用于金融计算、密码学、物理学模拟、工程问题等多个领域,尤其在处理无限位数(即非常大的数字)相乘...
大数相乘算法,java代码,包含独立大数相加算法 其中bigNumberPlus(String s1,String s2)为大数相加方法 bigNumberMultiply(String s1,String s2)为大数相乘方法
在计算机科学领域,大数相乘以及指数幂的计算是重要的基础操作,特别是在密码学、分布式计算、金融计算以及各种需要处理超过标准整型范围数值的场景中。本主题主要探讨如何高效地实现大数相乘和大数的指数幂运算。 ...
总结部分,作者提到虽然C语言实现大数相乘比较繁琐,需要自定义函数,但其他如C++、Java和Python等语言提供了更方便的库函数来处理大数。这个过程是学习和理解大数运算原理的好方法。 总之,这篇教程详细介绍了如何...
在编程领域,尤其是在处理数学计算时,经常遇到“大数相乘”的问题。标题中的"mul.zip_Mul(ti)住宅_mul的范围_大数相乘"暗示了我们正在讨论一个涉及大整数乘法的场景,可能是一个软件或算法实现。在描述中提到,...
本篇将深入探讨如何利用Java实现两个大整数的相乘,尤其是面对1000位以上的数字时的高效算法。 首先,Java标准库提供了`java.math.BigInteger`类,它专门用于表示和操作任意大小的整数。`BigInteger`类支持所有基本...
`Calculate.java`文件可能是实现大数相乘的一个Java源代码文件。在这个程序中,可能包含了对`BigInteger`对象的操作,比如创建大数实例、两个大数的乘法运算,以及可能的错误处理和性能优化。`BigInteger`类的乘法...
在实际编程中,处理大数相乘通常会用到特定的库,如Java的`BigInteger`类,Python的`int`类型(自动支持大数),或者C++的`GMP`库等。这些库提供了方便的API来进行大数运算,包括乘法。 例如,在Python中,我们可以...
两个大数相乘:利用数组实现,数组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大数乘法,包括浮点数的乘法运算。 首先,大数乘法的基本思想是将大数分解为单个数字,然后按照常规乘法规则逐位相乘。在Java中,我们可以使用字符串来存储这些大数,因为字符...
Java大数运算 BigInteger 类的方法调用 正如我们在 Java 中处理大数运算时,需要使用 BigInteger 类来实现,这是因为 Java 的基本数据类型无法存储非常大的数字。BigInteger 类提供了几个重要的方法来进行大数运算...
大整数相乘算法是计算机科学中用于处理超出标准数据类型范围的大整数乘法问题的一种方法。在大多数编程语言中,如C++,整数类型(如`unsigned long`)都有其最大值限制,一旦超过这个限制,就无法正确表示大整数的...
1. **初始化:** 创建一个足够长的数组用于存储两个大数相乘的结果。 2. **逐位相乘:** 从最低位开始,逐位对两个大数进行相乘。 3. **进位处理:** 对于每次相乘的结果,如果其值大于等于10,则需要将其拆分为个位...
大数的乘法相对复杂一些,常见的算法有Karatsuba算法和Toom–Cook算法,这里我们可能采用了更基础的“学校乘法”方法,也就是将一个大数拆分为多个位,然后分别与另一个大数相乘,再将结果相加并适当调整位数。...
包含模拟手工算大数相加、大数相乘(大数=越位的数)
2. Java:Java提供了`BigInteger`类,用于表示和操作大数。 3. C++:C++没有内置的大数类型,但可以使用GMP(GNU Multiple Precision Arithmetic Library)或自定义数据结构实现。 4. JavaScript:ES6引入了BigInt...