Java 大數高精度函式(BigInteger)
阿新 • • 發佈:2019-02-04
Java 提交格式
import .. 標頭檔案 ..
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){ // 等同於 !=EOF
T = cin.nextInt();
}
}
}
標頭檔案:
java.util.Scanner; java.math.BigInteger; java.math.BigDecimal;
大數運算時要使用相關的方法而不能使用運算子 如:(+ - * / ..)
BigInteger 大 ——— 整數
BigInteger m = new BigInteger( String );
BigDecimal 大 ——— 浮點數 //不適合於大量的數學運算
BigDecimal m = new BigDecimal( String );
基本函式:
BigInteger n = new BigInteger( String ); BigInteger m = new BigInteger( String ); toString(void); => BigInteger -> String n = BigInteger.valueOf(k); => n = k - - - - - - BigInteger.ZERO/ONE.. n.add(m); => n + m n.subtract(m); => n - m n.multiply(m); => n * m n.divide(m); => n / m 整除 n.remainder(m); n.mod(m); => n % m int[] a = n.divideAndRemainder(m); => a[0] = n / m; a[1] = n % m n.pow(m); => n ^ m n的m次冪 n.gcd(m); => gcd(n,m) n.abs(); => abs(n) n.negate(); => -n n.signum(); => n = 0 return 0 n < 0 return -1 n > 0 return 1 n.shiftLeft(k); => n << k 移位運算 n.shiftRight(k); => n >> k n.isProbablePrime(); => 判斷是否為素數 n.compareTo(m); => n < m return -1 比較方法 n > m return 1 n = m return 0 n.equals(m); => n == m return 1 n.min(m); => return min(n, m) n.max(m); => return max(n, m) n.intValue(); n.longValue(); n.floatValue(); n.doubleValue(); => change BigInteger to int / long / float / double bit_operation: 位運算 n.and(m); => n & m 且 n.or(m); => n | m 或 n.xor(m); => n xor m 異或 n.not(); => !n 非 n.bitLength(); => 二進位制位數 (補碼-正數的補碼為其自身) n.bitCount();
進位制轉換:
String string = new java.math.BigInteger(String num, int from).toString(int to);