使用break和Math.sqrt()对输出质数的优化与使用label和continue统计质数个数

package 质数;
import java.lang.Math;
public class 质数 {

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        PrimeNumber();
        System.out.println("");
        System.out.println("------------------------");
        PrimeNumber2();
        long end = System.currentTimeMillis();
        System.out.println("");
        System.out.println("------------------------");
        System.out.println((end-start)+"ms");
    }
    public static void PrimeNumber() {
        
        for(int i = 2 ; i <=  100; i++) {
            boolean flag = false;
            for(int j  = 2 ; j <= Math.sqrt(i)/*优化2*/; j++) {
                if(i % j == 0) {
                    flag =true;
                    break;//优化1
                }
            }
            if(!flag) {
                System.out.print(i+" ");
            }
        }
    }
    public static void PrimeNumber2() {
        int count = 0;//记录质数的个数
        label:for(int i = 2 ; i <=  100; i++) {
            for(int j  = 2 ; j <= Math.sqrt(i); j++) {
                if(i % j == 0) {
                    continue label;
                }
            }
            //能执行到此步骤的,都是质数
            count++;
        }
        System.out.println(count);

    }
}

结果:

posted @ 2020-02-09 12:28  放学别跑啊  阅读(184)  评论(0编辑  收藏  举报