java 大数详细讲解

Posted Tonyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 大数详细讲解相关的知识,希望对你有一定的参考价值。

介绍

java中用于操作大叔的类主要有俩种 第一个是BigInteger,代表大整数。第二个是BigDecimal,代表大浮点数。两种类的操作方法类似,所以我们只讲解BigInterger的用法

基本用法

Scanner input = new Scanner(System.in);

BigInteger a = input.nextBigInteger();

BigInteger b = input.nextBigInteger();

1.更改为大数数据类型

String s = "12345678987654321"

BigInteger a = new BigInteger(s);

 

int a =123456;

BigInteger a = BigInteger.valueOf(a);

 

String s = "12345678987654321";

BigInteger a =BigInteger.valueOf(s,10);//将字符串转换成10进制的大数

 

2.大整数的四则运算(都不改变a b的值)

a.add(b)    //求a+b 加法

a.subtract(b)  //求a-b 减法

a.divide(b)   //求a/b 除法

a.multiply(b)  //求a*b 乘法

3.大整数比较大小

a.equals(b);  //如果a b相等 返回true 否则返回false

if(a.equals(a.max(b)))   //如果a等于a和b中的较大者 即a>b 否则a<b

4.常用方法 

a.mod(b)  //求余数即a%b

a.gcd(b)   //求最大公约数

a.max(b)  //求最大值

a.min(b)   //求最小值

a.pow(b)  //求a^b的大数

5.求大数的长度

a.toString().length();

例题

1.a+b

import java.util.*;
import java.math.BigInteger;

public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        BigInteger a,b;
        BigDecimal c,d;
        while(input.hasNext()) {
            //整数的大整数求和
            a = input.nextBigInteger();
            b = input.nextBigInteger();
            System.out.println(a.add(b));
            
            //小数的大整数求和
            c = input.nextBigDecimal();
            d = input.nextBigDecimal();
            System.out.println(c.add(d));
        }
    }
}

 

2.大整数阶乘(一个模板)

import java.util.*;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        BigInteger []f = new BigInteger[5000];
        f[0] = f[1] = BigInteger.ONE;
        for(int i=2;i<=10000;i++)
        {
            f[i] = f[i-1].multiply(BigInteger.valueOf(i));
        }
        
        while(input.hasNext()) {
            int m = input.nextInt();
            System.out.println(f[m]);
        }
    }
}

 

3.Fibonacci数

import java.util.*;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        BigInteger []f = new BigInteger[5010];
        f[0] = f[1] = BigInteger.ONE;
        for(int i=2;i<=5000;i++)
        {
            f[i] = f[i-1].add(f[i-2]);
        }
        while(input.hasNext()) {
            int m = input.nextInt();
            System.out.println(f[m]);
        }
    }
}

 

以上是关于java 大数详细讲解的主要内容,如果未能解决你的问题,请参考以下文章

Java EL 详细用法讲解

JAVA接口详细讲解

近7000字长文详细讲解Java包装类,面试稳了

Java split方法详细讲解

快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)

快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)