java大数用法
文章目录
java大数用法1.大数的简单运算2.大数的 快速幂3. 大数的转换4. 大数的初始化
1.大数的简单运算
import java.util.Scanner;
import java.math.BigInteger;
/*
* import java.util.*;//星号*(通配符)表示包中所有的类
* import java.math.*;//含BigInteger类
*/
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigInteger x,y,z;
x=in.nextBigInteger();
y=in.nextBigInteger();
// 大数运算方法
System.out.println(x.add(y)); // x+y
System.out.println(x.subtract(y)); // x-y
System.out.println(x.divide(y)); // x/y
System.out.println(x.multiply(y)); // x*y
System.out.println(x.mod(y)); // x%y
System.out.println(x.xor(y)); // 异或
System.out.println(x.gcd(y));
// x,y 绝对值的最大公因数
x
System.out.println(x.modInverse(y));
// 逆元 返回值为 (x -1 mod m) x分之1
}
}
2.大数的 快速幂
x.pow(y) 计算 x^y x为BigInteger类型, y 必须为int 类型
x.modPow(y,z) 计算 x^y%z x,y,z 为BigInteger 类型
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigInteger x,y,z;
x=in.nextBigInteger();
y=in.nextBigInteger();
z=in.nextBigInteger();
System.out.println(x.pow(y.intValue()) );
System.out.println(x.modPow(y,z) );
}
}
3. 大数的转换
x.doubleValue(); // 转换为 double
x.intValue(); //转换为 int
x.longValue(); // 转换为 long
静态方法
BigInteger.valueOf(x)
// 返回一个BigInteger x ,将long 类型的x 变成 BigInteger类型
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigInteger x;
x=in.nextBigInteger();
System.out.println(x.doubleValue());
System.out.println(x.intValue());
System.out.println(x.longValue());
}
}
4. 大数的初始化
大数常量
BigInteger.ZREO 常量0
BigInteger.ONE 1
BigInteger.TEN 10
静态方法
BigInteger.valueOf(long x)
// 返回一个BigInteger x ,将long 类型的x 变成 BigInteger类型
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
final int N=(int) 1e5;
// 声明常量N 类似C++中的const int N=1e5
//java中的1e4是double类型,需要强制转换
//final关键字表示变量无法赋值修改
// 大数数组的创建
BigInteger a[]= new BigInteger[N+5];
// 大数 常量的声明
BigInteger one=BigInteger.ONE; // 1
BigInteger zero = BigInteger.ZERO; // 0
BigInteger y=BigInteger.valueOf(1000); // 声明大数1000
}
}
``