您的位置:

大数乘积java,乘法的积一定比乘数大

本文目录一览:

JAVA 如何用一维数组自己写一个大数乘法

给你个大数计算的例子

import java.math.BigInteger;

public class Admin {

public static void main(String... args) {

BigInteger a = BigInteger.valueOf(Long.MAX_VALUE);

BigInteger b = BigInteger.valueOf(Long.MAX_VALUE);

System.out.println(a);

System.out.println(b);

// 加

System.out.println(a.add(b));

// 减

System.out.println(a.subtract(b));

// 乘

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

// 除

System.out.println(a.divide(b));

}

}

JAVA 大数阶乘,不用biginteger怎么做

字符串效率很低

用数组来做效率高很多

下面是求1000项的Fibonaci数列,你参考下改成求阶乘也一样

public class Fibonacci

{

private static final int MAX_LENGTH = 1000000;

private static int[] a;

private static int[] b;

private final static int LEN = 1000000000;

private static int carry = 1;

public static void main(String[] args)

{

a = new int[MAX_LENGTH];

b = new int[MAX_LENGTH];

a[0] = 1;

b[0] = 1;

double begin = System.currentTimeMillis();

for(int i = 0; i 1000; i++)

{

addToA();

addToB();

}

display(b);

double end = System.currentTimeMillis();

System.out.println("Time:" + (end - begin) / 1000);

}

public static void addToA()

{

int carryNum = 0;

for(int i = 0; i carry; i++)

{

carryNum = (a[i] + b[i]) / LEN;

a[i] = (a[i] + b[i]) % LEN;

a[i+1] += carryNum;

}

if(carryNum == 1)

{

carry++;

}

}

public static void addToB()

{

int carryNum = 0;

for(int i = 0; i carry; i++)

{

carryNum = (b[i] + a[i]) / LEN;

b[i] = (b[i] + a[i]) % LEN;

b[i+1] += carryNum;

}

if(carryNum == 1)

{

carry++;

}

}

public static void display(int[] n)

{

for(int i = carry - 1; i = 0; i--)

{

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

}

System.out.println();

}

}

java 很长的大数 如何用String 相加,相乘?

相加比较简单,用单层循环就能实现。进位的话因为加法只存在进1和不进两种情况,用一个boolean型标记一下就能实现。

相乘的有难度。

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

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