import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
boolean flag = true; //ture:是质数。false:不是质数
for (int i = 2; i <= number-1; i++) {
if (number % i == 0 || number == 1) {
flag = false;
}
}
if(flag){
System.out.println(number + "是质数");
} else {
System.out.println(number + "不是质数");
}
}
}
当 number <3的时候都不会进入这个for循环,flag还是true。
1、问题:你的i的值是2,但是for循环判断条件是i<=number-1, 可以知道你输入的值为1和2都是不会进入for循环的,所以flag的值不变。
2、解决:可以多加if判断输入的值是1和2或是其他情况,如果是1和2或其他直接输出结果,否则进入循环判断是否是质数。