zoukankan      html  css  js  c++  java
  • (部分转载,部分原创) java大数类(1)

    头文件:

     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是模运算,具体区别如下图:

     

     

     

  • 相关阅读:
    mysql——查看存储过程和存储函数——概念
    mysql——视图——示例
    mysql——定义——存储过程和函数——概念
    mysql——索引——概念
    mysql——视图——概念
    mysql——触发器——前期整理笔记00
    mysql——使用——存储过程——示例
    mysql——触发器、视图、索引——前期整理笔记00
    mysql——使用——存储函数——示例
    IT职场人生系列之十七:入职(高手篇)
  • 原文地址:https://www.cnblogs.com/wkxnk/p/4693387.html
Copyright © 2011-2022 走看看