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

时间:2017-10-07 00:55:27

标签: java methods

我对编码项目很困惑。我应该返回大于$output = '<p><img src="" class="alignleft" width="600" height="400"> some text <img src="" class="alignright" width="600" height="300">'; 的最小素数,例如integer "num",应该返回smallestPrimeBiggerThan(20)我已经有代码来确定数字是否为素数,但我不知道如何做其余的代码。我已经查看了这个网站,但其余的解释是针对C和C ++的。我不知道如何将C之间的代码转换为Java。此外,我更喜欢这是一个简单的方法来完成它,因为我是代码新手,并不太了解更复杂的部分(数组等)。

以下是参数

的示例

整数n是80,所以整数旁边的最小素数是83,所以方法会返回83

以下是代码的基线

23

2 个答案:

答案 0 :(得分:1)

这是我放在一起的片段(注:逻辑由@Paul Lemarchand和@Elliot Frisch提供)以及this素数算法:

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;
}

我知道你已经拥有了你的主要算法,但是我希望它能够运行复制/粘贴,所以我从互联网上加入。您正在寻找的部分是while循环。每次循环时它会检查num是否为素数,但是先增加变量,这样我们就不会只返回素数输入。如果它不是素数,则增量......冲洗并重复,直到我们有一个素数然后返回。

答案 1 :(得分:1)

如果您不关心精度,可以使用nextProbablePrime类的BigInteger方法。例如:

BigInteger index=new BigInteger("20");
System.out.println(index.nextProbablePrime());

nextProbablePrime找到一个可能的素数.javadoc:

  

返回大于此BigInteger的第一个整数        可能是素数。由此返回的数字的概率        方法是复合不超过2 -100 。这种方法将是        在搜索时永远不会跳过素数:如果它返回p,则有        没有素数q,而this < q < p