[日常一练]用JAVA判断一个数字是否为素数!

什么是素数?

素数:只能被1到它本身整除的数,也就是说一个数从2到n-1都不能整除它就是素数;

一、试除法:

原理:只要把 2 到x -1 的数字全部试除,如果能整除则不是素数,如果不能则是素数;
    public static void main(String[] args) {
        int x = 11;
        Boolean ret = true;
        for (int i = 2; i < x-1; i++) {//  把2-n-1的数字全部试除;
            if (x % i == 0){            //如果能整除就不是素数;
                System.out.println(x+"不是素数");
                ret = false;            //计数器:如果是素数不赋值,跳出循环判断并打印;
                break;
            }
        } if(ret == true){
            System.out.println(x+"是素数");
        }
    }

二、对半试除:

原理:任何一个数字的最大因数都是他本身的一半,例如:100的最大因数50, 80的最大因数40,所以只需要试除到X/2就可以了,如果i比X的一半大,说明是素数,反之则不是素数;
    public static void main(String[] args) {
        int x = 11;
        int i = 0;
        for (i = 2; i <= x/2; i++) {
            if(x % i == 0){
                System.out.println(x+"不是素数");
                break;
            }
        }
        if(i > x/2){
            System.out.println(x+"是素数");
        }
    }

三、开根号(Math.sqrt)

原理:
一个数的两个因数中,一个因数是小于根号X的,另外一个因数则是大于根号X的,也就是可以从2试除到根号X,如果被整除,不是素数,如果被除数大于根号X,则是素数;
   public static void main(String[] args) {
        //(三)开根号求素数
        int x = 11;
        int i = 0;
        for (i = 2; i <= Math.sqrt(x); i++) {
        //Math函数.sqrt方法
            if(x % i == 0){
                System.out.println(x+"不是素数");
                break;
            }
        } if(i > Math.sqrt(x)) {
            System.out.println(x+"是素数");
        }
    }

开根号B站视频:

你可能感兴趣的:(日常小练,java,开发语言,算法)