您的位置:

java两个大数字相乘(大数相乘算法 java)

本文目录一览:

Java中有什么方法能使大于long 的两个数相乘???

建议自己写一个乘法函数去处理,采用字符数组存储你输入的要计算的两个数,结果也以字符数组给出。具体的计算可以按照它们的ASCII码进行计算,按10进制乘法规则,自己写一个函数。以前写过。

JAVA 两个数相乘怎么写?

public class Day25B {

public static void main(String[] args) {

baiint[] arr1=new int[5],arr2=new int[5],result=new int[5];

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

arr1[i]=(int)Math.round(Math.random()*40+10);

arr2[i]=(int)Math.round(Math.random()*40+10);

result[i]=arr1[i]*arr2[i];

System.out.println("索引\tarr1\tarr2\tresult");

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

System.out.println(i+"\t"+arr1[i]+"   x   "+arr2[i]+"   =\t"+result[i]);

扩展资料:

javap 类文件反汇编器数据类型boolean 布尔型

byte 字节型

char 字符型

short 短整型

int 整形

long 长整形

float 单精度浮点型

double 双精度浮点型class 类null 空类型

interface 接口

如何在JAVA中,输入两个很大的数字使他们相乘后,得到正确结果结果?

像LZ说的这种计算在实际应用中是常用的.特别是在加密、解密过程中。这个问题的本身就是一个很大的课题。单纯用传统的方式会由于溢出而导致计算结果不正确。目前,针对这一应用,市面上、开源软件中都有一些针对这种运算的函数数,称作大数运算库。我们如果只是为了写应用,而不研究数值计算的话,直接采用这些库就行了。具体的大数运算的库可以上网搜一下。提供一个大数运算的示例程序:

java两个大整数相乘的 算法怎么写

有BigInteger这个类,你可以参数,如果需要自己写,应该是用字符串来处理。

import java.math.BigInteger;

public class TT {

public static void main(String[] args) {

BigInteger i1 = new BigInteger("122222222222222222222222222222222");

BigInteger i2 = new BigInteger("33333333333333333333333333333333");

BigInteger result = i1.multiply(i2);

System.out.println(result.toString());

}

}

java求两个1000位数的乘积

给你一个思路,具体实现自己完成

你可以定义两个1000长度的数组a,b来存这两个乘数

然后定义一个2001长度的数组c来存储这个结果。

for(int i=0;i1000;i++){

for(int j=0;j1000;j++){

c[i+j+1]=(a[j]*b[i])/10;

c[i+j]=c[i+j]+(a[j]*b[i])%10;

c[i+j+1]=c[i+j]/10;

c[i+j]=c[i+j]%10;

}

}

for(int k=2001;k=0;k--){

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

}

上面是大概的思路,记住c[]在使用之间每个元素都要赋值为0

c[i+j+1]=(a[j]*b[i])/10;表示a的j位与b的i位相乘的十位上的数字存到c对应的上一位表示进位

c[i+j]=c[i+j]+(a[j]+b[i])%10;c[i+j]可能有下面进位上来的,在加上a的j位与b的i位相乘的个位上的数字就是此时c对位位置上的得数

c[i+j+1]=c[i+j]/10;c[i+j]=c[i+j]%10;

为了防止c在上一步[c[i+j]=c[i+j]+(a[j]+b[i])%10;]后又发生了进位,所以在执行此步

for(int k=2001;k=0;k--){

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

}

表示从高位依次打印出此数

自己想办法不显示高位为0的情况

大体思路就是如此

具体细节自己进行优化