什么是在java中查找下一个最大素数的内置函数?

6 java primes

Java API是否提供了一个在给定输入x的情况下计算下一个最大素数的函数?

dle*_*lev 5

这将是一个非常深奥的方法,并不是一个很好的候选人包含在一般类库中.您需要使用测试筛子自己编写.


ros*_*sum 5

还有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则返回,否则返回。