zoukankan      html  css  js  c++  java
  • 第二个算法

    判断101-200之间有多少个素数,并输出所有素数。

    算法一:

    public class ArithmeticTest2 {
        public static void main(String[] args){
            long start=System.currentTimeMillis();
               for(int i=2;i<=1000000;i++)
                if (isPrime(i)) {// 调用isPrime()方法
                    System.out.println(i + "是素数!");// 若isPrime()方法返回true,输出是素数
                }
            long end=System.currentTimeMillis();
            System.out.println("运行时间:"+(end-start));
        }
    
        /**
         * <pre>
         * 用于判断一个数是否为素数,若为素数,返回true,否则返回false
         * </pre>
         *
         * @param a
         *            输入的值
         * @return true、false
         */
        public static boolean isPrime(int a) {
    
            boolean flag = true;
    
            if (a < 2) {// 素数不小于2
                return false;
            } else {
    
                for (int i = 2; i <= Math.sqrt(a); i++) {
    
                    if (a % i == 0) {// 若能被整除,则说明不是素数,返回false
    
                        flag = false;
                        break;// 跳出循环
                    }
                }
            }
            return flag;
        }
    }

    算法二:

    public class ArithmeticTest2_1 {
    
        public static void main(String[] args){
            long start=System.currentTimeMillis();
            for(int i=2;i<=1000000;i++){
                    if (isPrime(i)) {// 调用isPrime()方法
                        System.out.println(i + "是素数!");// 若isPrime()方法返回true,输出是素数
                    }
                i=i+2; //过滤所有偶数
             }
            long end=System.currentTimeMillis();
            System.out.println("运行时间:"+(end-start));
        }
        public static boolean isPrime(int a) {
            boolean flag = true;
            if (a < 2) {// 素数不小于2
                return false;
            } else {
                for (int i = 2; i <= Math.sqrt(a); i++) {
                    if (a % i == 0) {// 若能被整除,则说明不是素数,返回false
                        flag = false;
                        break;// 跳出循环
                    }
                }
            }
            return flag;
        }
    }

    算法二的执行速度比算法一快了一倍。大家还有没有什么好的算法求推荐。

  • 相关阅读:
    Poj3126
    Poj1426
    2806 红与黑
    3100 蜗牛
    1225 八数码难题
    2549 自然数和分解
    2547 东方辉针城
    2928 你缺什么
    1629 01迷宫
    1029 遍历问题
  • 原文地址:https://www.cnblogs.com/renyubins/p/3781019.html
Copyright © 2011-2022 走看看