介绍

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.模板

import java.math.BigInteger;
import java.util.*;
public class Main{
    public static void main(String[] args)
    {
         Scanner input = new Scanner(System.in);
         BigInteger a = input.nextBigInteger();//输入一个大数
         BigInteger b = BigInteger.valueOf(0);//初始化一个为0的大数
         BigInteger c = BigInteger.valueOf(1);//初始化一个为1的大数
         BigInteger []shu = new BigInteger[4040];//初始化一个4040的大数数组
         int I = 1234567;
         BigInteger d = BigInteger.valueOf(I);//将int转化成BigInt
         String s = "1234567";
         BigInteger f = new BigInteger(s);    //将String转为BigInt
         int e = 10010;
         a = a.add(b);        //a = a+b
         a = a.subtract(b); //a = a-b
         a = a.divide(b);   //a = a/b
         a = a.multiply(b); //a = a*b
         a = a.mod(b);      //a = a%b
         if(a.equals(a.max(b)));// if(a>b)
         if(b.equals(a.max(b)));// if(a<b)
         
         c = a.pow(e);      //a = a^e  e必须为int类型
         c = a.gcd(b);      //a和b的最大公约数
         
         int len = a.toString().length(); //求大数的长度
         while(input.hasNext())//一直输入
         {
             BigInteger k = input.nextBigInteger();
         }
    }
}

 

 

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]);
        }
    }
}