栏目:Java8基础 作者:admin 日期:2014-12-28 评论:0 点击: 3,266 次
常用函数一:获取质数
1 2 3 4 5 6 7 8 9 |
public static BigInteger probablePrime(int bitLength, Random rnd) { if (bitLength < 2) { throw new ArithmeticException("bitLength < 2"); } // The cutoff of 95 was chosen empirically for best performance return (bitLength < SMALL_PRIME_THRESHOLD ? smallPrime(bitLength, DEFAULT_PRIME_CERTAINTY, rnd) : largePrime( bitLength, DEFAULT_PRIME_CERTAINTY, rnd)); } |
分析:返回有可能是质数、具有指定长度的正BigInteger。此方法返回的BigInteger是合数的概率不超出2-100。
常用函数二:比较函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public int compareTo(BigInteger val) { if (signum == val.signum) { switch (signum) { case 1: return compareMagnitude(val); case -1: return val.compareMagnitude(this); default: return 0; } } return signum > val.signum ? 1 : -1; } |
常用函数三:获得二进制数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public byte[] toByteArray() { int byteLen = bitLength() / 8 + 1; byte[] byteArray = new byte[byteLen]; for (int i = byteLen - 1, bytesCopied = 4, nextInt = 0, intIndex = 0; i >= 0; i--) { if (bytesCopied == 4) { nextInt = getInt(intIndex++); bytesCopied = 1; } else { nextInt >>>= 8; bytesCopied++; } byteArray[i] = (byte) nextInt; } return byteArray; } |
注意:更多移位操作介绍
常用函数四:
1 2 3 4 5 6 7 8 9 |
private static int[] stripLeadingZeroInts(int val[]) { int len = val.length; int keep; // Find first nonzero byte for (keep = 0; keep < len && val[keep] == 0; keep++) ; return java.util.Arrays.copyOfRange(val, keep, len); } |
注意:Arrays.copyOfRange的用法,大体上JDK的下标习惯都是这样的,如果两个都是下标,前一个下标inclusive,后一个exclusive。所以上面函数截取的范围是[keep,len)
------====== 本站公告 ======------
金丝燕网,一个严谨的网站!