初次接触问题我的构思
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int num = scanner.nextInt();
if(num<2){
System.out.println(num+"不是质数");
return;
}
boolean flag = true;
for(int i = 2 ; i < num ;i++){
if(num%i == 0){
flag = false;
}
}
String demo = flag?"是质数":"不是质数";
System.out.println(num+demo);
}
起初的构思如上代码,但考虑到代码的执行效率,如果把比num小的每一个数都循环执行一遍除法运算,过于麻烦。
于是进行了优化,改后代码如下:
//之需对比一大,比num的平方根小的数取余,即可
for(int i = 2 ; i < Math.sqrt(num) ;i++){
if(num%i == 0){
flag = false;
}
}
仔细想想,除了2以外的每一个偶数都不是质数,所以代码可以进一步优化
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int num = scanner.nextInt();
boolean flag = true;
if (num < 2) {
flag = false;
} else if (num == 2) {
flag = true;
} else if (num % 2 == 0) {
flag = false;
} else {
//之需对比一大,比num的平方根小的数取余,即可
for (int i = 2; i < Math.sqrt(num); i++) {
if (num % i == 0) {
flag = false;
}
}
}
String demo = flag ? "是质数" : "不是质数";
System.out.println(num + demo);
}