欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java-求质数-实现

程序员文章站 2022-03-13 12:06:12
...

质数:  就是大于1,且能被1和自己整除的自然数。

 

 

   /**  方法一
     * 质数:大于1的自然数,只能被自己和1整除
     *
     * @param n
     * @return
     */
    public static List<Integer> getPrimeNumber(int n) {
        List<Integer> priArr = new ArrayList<>();
        //1. 【只能从2开始遍历】
        for (int i = 2; i < n; i++) {
            boolean isPrime = true;
            //2.  【j是比1大,比i小的数,只要i能整除j 说明不是质数。】
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                priArr.add(i);
            }
        }
        return priArr;
    }

    /**方法二
     *  质数:大于1的自然数,只能被自己和1整除
     * @param num
     * @return
     */
    public static boolean isPrimeNumber(int num) {
        if (num == 2) return true;  //1.     【2是质数】
        if (num < 2 || num % 2 == 0) return false;  //2.  【小与2和能被2整除的都不是质数】
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i == 0) { //3.   【任何一个数只要能被 比自己平方根小的数整除,就不是质数】
                return false;
            }
        }
        return true;
    }
   public static List<Integer> getPriNumber(int num){
       List<Integer> list=new ArrayList<>();
       for(int i=2;i<=num;i++){
           if(isPrimeNumber(i)){
               list.add(i);
           }
       }
       return list;
   }

   // main  函数
    public static void main(String[] args) {
        System.out.println(getPrimeNumber(100).toString());
        System.out.println(getPriNumber(100));
    }

 

相关标签: 质数