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