何为素数?
只能被1和他本身整除的数叫素数 反之叫 合数 ,素数没有因数 ,合数有因数(且成对出现)
有3中实现方式:数n
i=2, 循环到n-1
| |
i=2, 循环到 n/2
|
如果有因数,因数最大也只能是小于 它的二分之一
|
i=2,循环到 根号n | 如果有因数,一个小于根号n,一个大于根号n |
//方法一
public class text {
public static void main(String[] args) {
Scanner cin= new Scanner(System.in);
System.out.println("请依次输入数字");
while(cin.hasNext()){
int n=cin.nextInt();
boolean flag=true;
for (int i=2;i<n;i++){
if (n%i==0){ //n=6时候, 6 % 2=0 6能被2整除
flag=false;
break;
}
}
if(flag){
System.out.println("是素数");
}else{
System.out.println("不是素数");
}
}
}
}
//方法二
public class text {
public static void main(String[] args) {
Scanner cin= new Scanner(System.in);
System.out.println("请依次输入数字");
while(cin.hasNext()){
int n=cin.nextInt();
boolean flag=true;
for (int i=2;i<=n/2;i++){ //如果是i<n/2 eg:n=4, 循环i=2,i<2 否,不进入循环
if (n%i==0){
flag=false;
break;
}
}
if(flag){
System.out.println("是素数");
}else{
System.out.println("不是素数");
}
}
}
}
//方法三
public class text {
public static void main(String[] args) {
Scanner cin= new Scanner(System.in);
System.out.println("请依次输入数字");
while(cin.hasNext()){
int n=cin.nextInt();
boolean flag=true;
for (int i=2;i<=Math.sqrt(n);i++){ //如果是i<Math.sqrt(n) n=4时候,循环i=2,i<2 否,不进入循环
if (n%i==0){
flag=false;
break;
}
}
if(flag){
System.out.println("是素数");
}else{
System.out.println("不是素数");
}
}
}
}