不知道问题出在哪
import java.util.Scanner;//用方法,输出一个大于正整数n的最小质数
public class Homework8 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
n++;
int result = zhiShu(n);
System.out.println(result);
}
public static int zhiShu(int n) {
for(int i = 2; i < n; i++) {
if(n % i == 0) {
n++;
continue;
}
}
return n;
}
}
当我输入23的时候,不知道为什么输出的是27,答案不对,输入其他数字,答案又是对的,求大佬帮我改改 zhiShu方法里n每一次增长1,i都需要从2开始判断,你的代码没有这样 你的程序只能判断这个数是不是质数,在for循环过程中尽量不要改变影响for循环的变量,这样即不便于理解,
程序也容易出错,这里建议使用两个循环,一个判断是否是质数,一个提供向上加的作用
参考代码
import java.util.Scanner;
public class FamilyAccount {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int result = zhiShu(n);
System.out.println(result);
}
public static int zhiShu(int n) {
boolean log=true;
while (log) {
n++;
for (int i = 2; i <=n; i++) {
if (n % i == 0&&n!=i) {
break;//说明不是质数
}
if (n==i){
log=false;
}
}
}
return n;
}
} 如果取余等于0;那么n加1,再来进行计算,而此时的i也还是要从2开始,正是缺少了这个,所以在continue上面加上一条i=1,那么下次for循环开始i要加1变成2,这样就对了 你写这个程序是为了干什么,我看不懂。。。。。找不出毛病。。。。
页:
[1]