还有BigInteger.nextProbablePrime(),如果你是大整数工作可能适合。否则,您可以轻松编写自己的代码。这是我之前准备的:
static long nextPrime(long previous) {
if (previous < 2L) { return 2L; }
if (previous == 2L) { return 3L; }
long next = 0L;
int increment = 0;
switch ((int)(previous % 6L)) {
case 0: next = previous + 1L; increment = 4; break;
case 1: next = previous + 4L; increment = 2; break;
case 2: next = previous + 3L; increment = 2; break;
case 3: next = previous + 2L; increment = 2; break;
case 4: next = previous + 1L; increment = 2; break;
case 5: next = previous + 2L; increment = 4; break;
}
while (!isPrime(next)) {
next += increment;
increment = 6 - increment; // 2, 4 alternating
}
return next;
}
Run Code Online (Sandbox Code Playgroud)
它使用2、4轮跳过2和3的倍数。您将需要一种主要的测试方法:
boolean isPrime(long toTest) { ... }
Run Code Online (Sandbox Code Playgroud)
true如果其参数为质数,false则返回,否则返回。
| 归档时间: |
|
| 查看次数: |
7876 次 |
| 最近记录: |