使用Java,如何找到给定整数下一个最小的素数?
我对一个编码项目感到困惑。我应该返回比整数“num”大的最小素数,例如使用Java,如何找到给定整数下一个最小的素数?,java,methods,Java,Methods,我对一个编码项目感到困惑。我应该返回比整数“num”大的最小素数,例如smallestPrimeBiggerThan(20)应该返回23我已经有了确定该数字是否为素数的代码,但我不确定如何执行其余代码。我已经看过这个网站,但是其余的解释是C和C++。我不知道如何将C语言之间的代码翻译成Java语言。另外,如果这是一种简单的方法来完成它,我更愿意这样做,因为我不熟悉代码,对更复杂的部分(数组等)不太了解 下面是一个参数示例 整数n是80,因此整数旁边的最小素数是83,因此该方法将返回83 下面是代
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()的整个概念
方法错误。您将一遍又一遍地重复相同的计算。效率极低。相反,您应该通过筛子生成素数,直到输入数字指定的最大值,然后返回最后一个值。