Java API是否提供了一个函数,该函数在给定输入x?
的情况下计算下一个最大素数答案 0 :(得分:5)
答案 1 :(得分: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;
}
这使用2,4轮来跳过2和3的倍数。你需要一个主要的测试方法:
boolean isPrime(long toTest) { ... }
如果参数为素数,则返回true
,否则返回false
。
答案 2 :(得分:4)
是的,确实没有这样的功能!
答案 3 :(得分:1)
Java java.math.BigInteger类包含一个方法nextProbablePrime()来检查数字的素数。
import java.math.BigInteger;
public class NextPrime {
public static void main(String[] args) {
int number = 83;
Long nextPrime = nextPrime(number);
System.out.println(nextPrime + " next prime to " + number);
}
/**
* method to find next prime
* @param number
* @return boolean
*/
private static Long nextPrime(int number) {
BigInteger bValue = BigInteger.valueOf(number);
/**
* nextProbablePrime method used to generate next prime.
* */
bValue = bValue.nextProbablePrime();
return Long.parseLong(bValue.toString());
}
}
<强>输出:强> 89下一个素数到83
有关详细信息,请参阅我的博客:
http://javaexplorer03.blogspot.in/2016/05/generate-next-prime-of-number-in-java.html
答案 4 :(得分:0)
public class nextprime {
public static void main(String args[]) {
int count = 0;
int n = 17;
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
count++;
}
}
if (count == 0) {
System.out.println("prime");
for (int p = n + 1; p >0; p++) {
int y=0;
for (int i = 2; i <= p / 2; i++) {
if (p % i == 0) {
y++;
}
}
if(y==0)
{
System.out.println("Next prime "+p);
break;
}
}
} else {
System.out.print("not prime");
}
}
}
答案 5 :(得分:0)
Primes.nextPrime(int n)
就是您所需要的。