【题目】要求编写一个方法,输出大于某个正整数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
if(i%j==0){
break;
}
return i;
}
}
return i;
}
}
因为你提供的代码不全,所以我只能在你的代码基础上修改了一下。修改如下:
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;// 用于匹配函数返回值,表示没找到
}
}
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;
if(j==i)
return i;
}
}