判断一个数是否是质数

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数

如何判断一个数是否是质数:

代码1:

 1     /**
 2      * 判断给定的数字是否为素数(质数)
 3      * @param num
 4      * @return
 5      */
 6     public static boolean isPrime(int num){
 7         if(num < 2){
 8             return false;
 9         }
10         
11         for(int i = 2;i < num;i++){
12             if(num % i == 0){
13                 return false;
14             }
15         }
16         
17         return true;
18     }

 

代码2:

 1     /**
 2      * 判断给定的数字是否为素数(质数)
 3      * @param num
 4      * @return
 5      */
 6     public static boolean isPrime(int num){
 7         if(num < 2){
 8             return false;
 9         }
10         
11         for(int i = 2;i*i < num;i++){
12             if(num % i == 0){
13                 return false;
14             }
15         }
16         
17         return true;
18     }

总结:代码2相对于代码1效率更高

判断质数的技巧:

根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n,如果都不能整除,则n必然是质数。如我们要判断1993是不是质数,50*50>1993,那么我们只要用1993去 除<50的质数就可以了。100以内的质数有25个,还是比较好记的,我们只要记熟100以内质数,就可以快速判断10000以内的数是不是质数了。

希望有更优算法的朋友能给我提出建议和指正。

posted on 2015-05-02 11:02  zsj0828  阅读(1664)  评论(1编辑  收藏  举报