例1 判断一个数是不是素数
法一:判断一个数是不是素数---当数字n除以2~n-1 中的数字的模==0时,说明不是素数
public class Test {
public static void main(String[] args) {
//判断一个数是不是素数---当数字n除以2~n-1 中的数字的模==0时,说明不是素数
int n = 53;
int i = 2;
for (; i < n; i++) {
if (n % i == 0) {
System.out.println(n+"不是素数!");
break;
}
// }else{
// System.out.println("n是素数");//这样写就错误,9不是素数
// }
}
if (i == n) {//运行到20行
System.out.println(n+"是素数!");
}
}
}
法二:当n不是素数的时候,比如16=1*16=2*8=4*4,可以发现16是可以看成除开小于等于n/2的数字的,也就是[2,n/2],那么可以认为当数字n除以2~n/2 中的数字的模==0时,说明不是素数
public static void main(String[] args) {
//判断一个数是不是素数---当数字n除以2~n/2 中的数字的模==0时,说明不是素数
int n = 10;
int i = 2;
for (; i <=n/2; i++) {
if (n % i == 0) {
System.out.println(n+"不是素数!");
break;
}
}
if (i > n/2) {//运行到20行
System.out.println(n+"是素数");
}
}
法三:同样发现16=1*16=2*8=4*4中有一半的因数是小于等于根号16的,那么可以同样认为当数字n除以2~根号n 中的数字的模==0时,说明不是素数
public static void main(String[] args) {
//判断一个数是不是素数---当数字n除以2~根号n 中的数字的模==0时,说明不是素数
int n=9;
int i=2;
for(;i<=Math.sqrt(n);i++){//注意这个根号n的写法
if(n%i==0) {
System.out.println(n + "不是素数!");
break;
}
}
if(i>Math.sqrt(n)){
System.out.println(n+"是素数!");
}
}
例2 判断1-100之间的数是不是素数
public static void main(String[] args) {
//判断1-100之间的数是不是素数
for(int n=1;n<101;n++){
int i=2;
for(;i<=Math.sqrt(n);i++){
if(n%i==0) {
System.out.println(n + "不是素数!");
break;
}
}
if(i>Math.sqrt(n)){
System.out.println(n+"是素数!");
}
}
}