java 大數詳細講解

介紹java

java中用於操做大叔的類主要有倆種 第一個是BigInteger,表明大整數。第二個是BigDecimal,表明大浮點數。兩種類的操做方法相似,因此咱們只講解BigInterger的用法數組

基本用法ide

Scanner input = new Scanner(System.in);spa

BigInteger a = input.nextBigInteger();code

BigInteger b = input.nextBigInteger();blog

1.更改成大數數據類型ip

String s = "12345678987654321"ci

BigInteger a = new BigInteger(s);字符串

 

int a =123456;input

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]);
        }
    }
}
相關文章
相關標籤/搜索