您的位置:首页 > 编程语言 > Java开发

(部分转载,部分原创) java大数类(1)

2015-07-31 23:02 531 查看
头文件:

import java.io.*;

import java.util.*;

import java.math.*;

BigInteger属于java.math.BigInteger

读入:

Scanner cin = Scanner (System.in);

while(cin.hasNext())//等价于!=EOF

n=cin.nextInt(x);//读入一个int型x进制的数,一般x缺省,默认十进制

n=cin.nextBigInteger(x);//读入一个x进制的大整数,一般x缺省,默认十进制

数据类型:

BigInteger 任意大的整数,原则上是,只要你的计算机的内存足够大,可以有无限位的

BigDecimal 任意大的实数,可以处理小数精度问题。

BigInteger中一些常见的常数:

BigInteger.ZERO, BigInteger.ONE, BigInteger.TEN

将int型的数赋值给BigInteger:

BigInteger.valueOf(k);

定义一个x进制的BigInteger:

BigInteger a = new Bigteger("123", x);

x缺省默认为十进制

基本的函数:

valueOf():  赋初值

add():  + a.add(b);

subtract():  -

multiply():  *

divide():  /

remainder():  this % val

divideAndRemainder():  a[0]=this / val; a[1]=this % val

pow():  a.pow(b)=a^b

gcd(), abs():  公约数,绝对值

negate():  取负数

signum():  符号函数

mod():  a.mod(b)=a%b;

shiftLeft():  左移,this << n ,this*2^n;

shiftRight():  右移,this >> n,this/2^n;

and():  &&,且;

or():  ||,或;

xor():  ^, 异或

not():  !, 非;

bitLength(): 返回该数的最小二进制补码表示的位的个数,即 *不包括* 符号位 (ceil(log2(this <0 ? -this : this + 1)))。对正数来说,这等价于普通二进制表示的位的个数。

bitCount(): 返回该数的二进制补码表示中不包扩符号位在内的位的个数。该方法在 BigIntegers 之上实现位向量风格的集合时很有用。

isProbablePrime(): 如果该 BigInteger 可能是素数,则返回 true ;如果它很明确是一个合数,则返回 false 。 参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。

compareTo(): 根据该数值是小于、等于、或大于 val 返回 -1、0 或 1;

equals(): 判断两数是否相等,也可以用compareTo来代替;

min(),max(): 取两个数的较小、大者;

intValue(),longValue(),floatValue(),double(): 把该数转换为该类型的数的值。

toString(x): 当要把计算结果输出时应该使用.toString(x)方法将其转换为x进制的字符串,一般x缺省,默认为十进制。

类型转换:

int -> BigInteger :

int a = 3;

BigInteger b = BigInteger.valueOf(a);

BigInteger -> int :

BigInteger a = BigInteger.TEN;

int b = a.intValue();

int -> String :

int a = 3;

String b = a.toString();

String -> int :

String a = "123";

int b = Intrger.parseInt(a);

(还有Float.parseFloat(),用法类似)

String -> BigInteger :

String a = "123";

BigInteger b = new BigINteger(a);

BigInteger -> String :

BigInteger a = BigInteger.TEN;

String b = a.toString();

进制转换:

10进制 -> 16进制:

Integer.toHexString(4);

10进制 -> 2进制:

Integer.toBinaryString(4);

16进制 -> 10进制:

Integer.parseInt("4", 16);

注意:

关于remaindermod的区别:

BigInteger remainder(BigInteger val)
和mod类似,区别在于remainder是取余运算,mod是模运算,具体区别如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: