Java判断一个正整数是否为质数(素数)。

 质数的定义:质数(prime number)又称为素数,有无限多个。质数定义在大于1的自然数中,除了1和它本身以外不会再有其它因数的数称为质数。

    //判断一个数是否是质数(素数)
    public boolean isPrimeNumber(int num){
        if(num == 2) return true;//2特殊处理
        if(num < 2 || num % 2 == 0) return false;//识别小于2的数和偶数
        for(int i=3; i<=Math.sqrt(num); i+=2){
            if(num % i == 0){//识别被奇数整除
                return false;
            }
        }
        return true;
    }
 

(1)从2开始,2是最小的质数。

(2)除了2之外的偶数全都不是质数,因为除了1和自身之外它们还能被2整除。若为大于2的奇数,则进入下一步继续判断。

(3)将其开方,若从3到开方向下取整之间的所有奇数都不能将其整除,则说明该数为质数。

至于为什么只用除到其平方根?

因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。

猜你喜欢

转载自blog.csdn.net/qq_28103611/article/details/81530493