【题目】要求编写一个方法,输出大于某个正整数n的最小的质数。
【问题】根据我以下代码思路,请问我所写的代码哪里不合理,最终的运行结果不太对,但我找不出原因,也不知道怎么改善。最好能按照我的思路,在我的源代码样貌上,麻烦答神们帮我指点出问题所在,这样我才能最清楚明白自己错在哪里。谢谢~
public class MethodCallWork02{
public static void main(String[]args){
System.out.print("请输入一个正整数:");
java.util.Scanner s= new java.util.Scanner(System.in);
int num=s.nextInt();
System.out.println("大于"+num+"的最小质数为:"+zhiShu(num));
}
public static int zhiShu(int n){
int i =0;
for (i=n+1;i>n;i++){
for (int j=2;j<i;j++){
if(i%j==0){
break;
}
return i;
}
}
return i;
}
}

Java语言:作页上的不解,答神们帮我看看。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- a5156520 2022-07-26 19:26关注
因为你提供的代码不全,所以我只能在你的代码基础上修改了一下。修改如下:
public class MethodCallWork02{ public static void main(String[]args){ System.out.print("请输入一个正整数:"); java.util.Scanner s= new java.util.Scanner(System.in); int num=s.nextInt(); System.out.println("大于"+num+"的最小质数为:"+zhiShu(num)); } public static int zhiShu(int n){ int i =0; int find=1; //寻找标志,用于标记是否找到下一个质数,1为找到,0为未找到,默认为找到,等待下面的判断重置find标志 for (i=n+1;i>n;i++){ //从n的下一个数开始,直到寻找到下一个质数 for (int j=2;j<i;j++) { //判断当前的数是否为质数 if(i%j==0){ //如果不是质数,则标志置0,表示当前的数不是质数 find=0; break; //退出循环,开始判断下一个数 } } if(find==1) { //如果当前数是质数,则返回当前数 return i; } find=1; //质数寻找标志置1,表示默认找到,等待判断下一个数来重置标志 } return -1;// 用于匹配函数返回值,表示没找到 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用