java 判断一个数是素数(优化)

素数: 一个大于1的且只能被1和它本身整除的自然数叫素数 。

我们认为计算机判断一个数是否是素数过程 :例如11

i=2

2*3  2*3 2*5

i=3

3*2  3*3

i=4

4*2

i=5

5*2

i=6( 超过11的大小了)

6*2

这里我们可以很简单的写出一个穷举法的程序

int i=2;

while((n%i!=0)&&i

i++;

很明显上面这个方法效率很低

我们可以找出规律   当i=3 时  3*3  就是一个临界值  也就是i*i    也就是 i*i

代码贴出

package judgePrim;

public class prime {
public static void judgePrime(int n){
boolean flag = false;
int i = 2;
while((n % i != 0) && i * i < n){
	i ++;
	
}
if(i * i > n){
System.out.println("是素数");
}
else{
	System.out.println("非素数");
}

	
}
	public static void main(String args[]){
judgePrime(11);

}
}


 

你可能感兴趣的:(算法)