使用Java,如何找到给定整数下一个最小的素数?

使用Java,如何找到给定整数下一个最小的素数?,java,methods,Java,Methods,我对一个编码项目感到困惑。我应该返回比整数“num”大的最小素数,例如smallestPrimeBiggerThan(20)应该返回23我已经有了确定该数字是否为素数的代码,但我不确定如何执行其余代码。我已经看过这个网站,但是其余的解释是C和C++。我不知道如何将C语言之间的代码翻译成Java语言。另外,如果这是一种简单的方法来完成它,我更愿意这样做,因为我不熟悉代码,对更复杂的部分(数组等)不太了解 下面是一个参数示例 整数n是80,因此整数旁边的最小素数是83,因此该方法将返回83 下面是代

我对一个编码项目感到困惑。我应该返回比整数“num”大的最小素数,例如
smallestPrimeBiggerThan(20)
应该返回
23
我已经有了确定该数字是否为素数的代码,但我不确定如何执行其余代码。我已经看过这个网站,但是其余的解释是C和C++。我不知道如何将C语言之间的代码翻译成Java语言。另外,如果这是一种简单的方法来完成它,我更愿意这样做,因为我不熟悉代码,对更复杂的部分(数组等)不太了解

下面是一个参数示例

整数n是80,因此整数旁边的最小素数是83,因此该方法将返回83

下面是代码的基线

public static void main(String[] args) {
    System.out.println(smallestPrimeBiggerThan());

}

public static int smallestPrimeBiggerThan(int num) {

}

下面是我整理的一个片段(注:逻辑由@Paul Lemarchand和@Elliot Frisch提供)以及素数算法:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.print("Please enter a whole number to find the next highest prime of: ");
    System.out.println(smallestPrimeBiggerThan(input.nextInt()));

}

static boolean isPrime(int n) {
    if (n%2==0) return false;
    for(int i=3;i*i<=n;i+=2) {
        if(n%i==0)
            return false;
    }
    return true;
}

public static int smallestPrimeBiggerThan(int num) {
        while (!isPrime(num)) {
            ++num;
        }
        return num;
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“请输入一个整数以查找以下最高素数:”);
System.out.println(smallestPrimeBiggerThan(input.nextInt());
}
静态布尔isPrime(int n){
如果(n%2==0)返回false;

对于(int i=3;i*i如果不关心精度,可以使用
biginger
类的
nextProbablePrime
方法。例如:

BigInteger index=new BigInteger("20");
System.out.println(index.nextProbablePrime());
nextProbablePrime
是查找一个可能的素数。javadoc:

返回大于该
BigInteger
的第一个整数
可能是素数。此函数返回的数字的概率
方法组合不超过2-100。此方法将
搜索时千万不要跳过素数:如果它返回
p
,则有
没有素数
q
使得
这个


while(!isPrime(num)){num++;}return num;
@ElliottFrisch说一个人要传递
23
作为输入,你的代码将返回
23
,而OP应该返回比整数“num”大的最小素数,该整数应该是
29
,这就解决了:
while(!isPrime(num)){++;}return num;
(++num将在检查num是否为prime之前向num添加1)@Elliott我想你的意思是
而(!isPrime(num++);
isPrime()的整个概念
方法错误。您将一遍又一遍地重复相同的计算。效率极低。相反,您应该通过筛子生成素数,直到输入数字指定的最大值,然后返回最后一个值。