1、基本思路
import java.util.Scanner;
public class HelloWord{
public static void main(String[] args) {
Scanner scanner = new Scanner( System.in);
int n = scanner.nextInt();
int i = 2;//从2开始排除1不是素数
for (; i < n; i++){
if(n % i == 0){//判断输入的数是否可以被整除
break;//若循环中出现一个i可以被整除,停止循环,向下进行
}
}
if(i == n){
System.out.println(i+"是素数");
}
}
}
2、找规律减少代码运算量(一)
import java.util.Scanner;
public class HelloWord {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i = 2;
for(;i <= n/2; i++){//n如果是合数,可以分成a*b。而其中a,b一定有一个小于n/2
if(n % i == 0){
break;
}
}
if(i > n/2){
System.out.println(n+"是素数");
}
}
}
若n=16 --> 1 * 16 , 4 * 4 , 2 * 8
可以发现16的因子一定有一个数小于等于n/2
3、找规律减少代码计算量(二)
java.util.Scanner;
public class HelloWord {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i = 2;
for (; i <= Math.sqrt(n); i++) {//若为合数,那么这个数的其中一个因数,一定小于这个数的开根
if(n % i == 0){
break;
}
}
if(i > Math.sqrt(n)){
System.out.println(n+"是素数");
}
}
}
若n=16 --> 1 * 16 , 4 * 4 , 2 * 8
可以发现一定有一个数字是小于等于根号n