我的问题很简单,但我不知道如何解决我想要的问题。 我必须找到小于给定数字的最大素数,如果不存在则打印消息。
import java.util.Scanner;
public class Ex8 {
public static void main(String[] args){
int n;
System.out.println("Give the number: ");
Scanner in = new Scanner(System.in);
n=in.nextInt();
while(prim(n) == false){
n--;
}
System.out.println(n);
}
public static boolean prim(int m){
int n=m;
for(int i=2;i<n;i++){
if(n%i == 0){
return false;
}
}
return true;
}
}
代码有效,如果数字是 10,它会打印 7,但我想进行 2 个新的修改,但我找不到解决方案。例如,如果给定数字是 1,应如何修改我的程序以打印消息?我尝试编写一个 if-else 但如果我用 if 修改 while ,这将没有帮助。 第二件事,如何使得如果给定的数字是质数 nr ,代码仍然会找到比给定的数字少的数字。如果我给出数字 7,输出也是 7。 谢谢。
最佳答案
- 您无需修改
while
- 只需在其周围编写if
即可。 在开始测试素数之前,只需递减
n
即可。if (n < 2) { System.out.println("Number must be greater than 1"); } else { n--; while (!prim(n)) { n--; } System.out.println(n); }
或者:
if (n < 2) {
System.out.println("Number must be greater than 1");
} else {
while (!prim(--n));
System.out.println(n);
}
关于java - java 小于给定数的最大素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32846274/