写一期BigInterger
先写一个实例吧
如果:控制台输入一个很大的数s,你想去先储存它,然后用它,你不能用类型转换如(BigInterger).s来转换或者BigInterger.valuesOf(s).
应该用new BigInterger(s)来解决。
String s="10000000000000000000000000000";
BigInteger bigInteger = new BigInteger(s);
System.out.println(bigInteger);
10000000000000000000000000000
Process finished with exit code 0
用它的话,就涉及加、减、乘、除、取余
public BigInteger add(BigInteger val):加
public BigInteger subtract(BigInteger val):减
public BigInteger multiply(BigInteger val):乘
public BigInteger divide(BigInteger val):除
remainder();取余
pow(); a.pow(b)=a^b a的b次方
gcd(); 最大公约数(各位,竞赛用它,不是有手就行?)
一些其他可能用到的方法
int compareTo(BigInteger val)
这个BigInteger与指定BigInteger比较。
BigInteger abs()
返回的值BigInteger是BigInteger的绝对值。
boolean equals(Object x)
与BigInteger指定对象比较,看是否相等。
记不住的话,直接.一下,直接起飞
话不多说,老规矩,上例子
String s="10000000000000000000000000000";
BigInteger bigInteger = new BigInteger(s);
System.out.println(bigInteger.divide(new BigInteger("100000000000000")));
System.out.println(bigInteger.add(new BigInteger("100000000000000")));
System.out.println(bigInteger.subtract(new BigInteger("100000000000000")));
System.out.println(bigInteger.multiply(new BigInteger("100000000000000")));
System.out.println(bigInteger.not());//BigInteger not()返回的值是 (~this) BigInteger。简单说就是取反
100000000000000
10000000000000100000000000000
9999999999999900000000000000
1000000000000000000000000000000000000000000
-10000000000000000000000000001
Process finished with exit code 0
总结:
1.一般数据用int就行,长一点的用long
范围:
byte (-128-127);
long (-9223372036854774808~9223372036854774807)
2.以下是java.math.BigInteger类中的字段:
static BigInteger ONE – BigInteger的常量1。
static BigInteger TEN – BigInteger的常量10。
static BigInteger ZERO – BigInteger的常量0。
如果用BigInterger则需要知道那些方法直接看API。
其他还有如进制转换,可以各位拓展一下。