日期:2014-05-20 浏览次数:20837 次
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
public class MillerRabin {
public static void main(String[] args) {
long t0, t1;
t0 = System.nanoTime();
boolean b = !isComposite(479001599);
boolean c = !isComposite(456789012);
t1 = System.nanoTime();
System.out.println(t1 - t0);
System.out.println(b + " " + c);
}
/**
* <p>Miller-Rabin 测试某一个数是否是合数</p>
*
* @param n 需要测试的数
* @return true: 该数为合数;false: 该数为素数
*/
public static boolean isComposite(int n) {
if (n < 2) {
throw new IllegalArgumentException("number must greater than or equals 2");
}
// 排除 2、3、5、7 以加速测试
if (n == 2
------解决方案--------------------
n == 3
------解决方案--------------------
n == 5
------解决方案--------------------
n == 7) {
return false;
}
// 偶数
if ((n & 1) == 0) {
return true;
}
// 排除 3、5、7 的倍数,以加速测试
if (n % 3 == 0) {