美文网首页
100 以内所有质数

100 以内所有质数

作者: 啷里个啷里个啷个里个啷 | 来源:发表于2021-06-17 13:49 被阅读0次
    // 100 以内所有质数
    // 质数(素数):只能被1和它本身整除的自然数。
    
    // 方法一:
    class PrimeNumberTest {
    
        public static void main(String[] asrgs){
            String str = "0-100质数为: ";
            boolean isPrimeNumber = true;
            // 获取程序运行开始时的当前时间
            long start = System.currentTimeMillis();
            int count = 0;
            for(int i = 2 ; i <= 100000; i++){
                // for (int j = 2; j < i;j++ ) { //
                for (int j = 2; j <= Math.sqrt(i);j++ ) { //优化二:对本身是质数的有效
                    if (i % j == 0) {
                        isPrimeNumber = false;
                        break;// 优化一:只对非质数的自然数是有效的
                    }
                }
                if (isPrimeNumber) {
                    // str = str + i + " ";
                    count++;
                }
                isPrimeNumber = true;
            }
            // System.out.println(str);
            System.out.println(count);
            // 获取程序运行结束时的当前时间
            long end = System.currentTimeMillis();
            System.out.println(end - start);
    
            /*
            说明:当 i = 100000 时,(输出str时)
            没有优化的时间是:12314
            优化一的时间为: 1294
            优化二的时间为: 273
            优化一 + 优化二 :146
    
            (输出count时)
            没有优化的时间是:12228
            优化一的时间为: 1127
            优化二的时间为: 125
            优化一 + 优化二 :12
    
            特别说明:
            算法重要性。
            */
        }
    }
    // 方式二:
            String str = "0-100质数为: ";
    
            // 获取程序运行开始时的当前时间
            long start = System.currentTimeMillis();
            int count = 0;
    
            label: for(int i = 2 ; i <= 100; i++){
                // for (int j = 2; j < i;j++ ) { //
                for (int j = 2; j <= Math.sqrt(i);j++ ) { 
                    if (i % j == 0) {
                        continue label;
                    }
                }
                // str = str + i + " ";
                count++;
            }
            // System.out.println(str);
            System.out.println(count);
    
            // 获取程序运行结束时的当前时间
            long end = System.currentTimeMillis();
            System.out.println(end - start);
    
    

    相关文章

      网友评论

          本文标题:100 以内所有质数

          本文链接:https://www.haomeiwen.com/subject/suwssltx.html