Java实现求质数(素数)

题目要求:

输出0-100以内的所有质数(素数)。
质数:只能被 1 和它本身整除的数。
1不是素数也不是合数。

代码实现:

public class PrimeNumber {

    public static void main(String[] args) {

        Boolean flag = true;

//        long start = System.currentTimeMillis();

        for(int i = 2;i <= 100;i++){
            for(int j = 2;j <= Math.sqrt(i);j++){
                if(i % j == 0){     // i 被 j 整除,不是质数
                    flag = false;   // flag 置为false
                    break;
                }
            }
            if(flag == true){
                System.out.print(i + " ");
            }
            flag = true;            //将 flag 重置为 true
        }

//        long end = System.currentTimeMillis();
//        System.out.println("所花费的时间为:" + (end - start));
    }
}

运行结果:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

System.currentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。返回的是 long 型。可以通过这个方法计算程序的运行时长。

程序扩展:

可以通过修改 i 的值,来输出其他区间的所有质数。例如:输出 200 - 300 以内的质数。

public class PrimeNumber {

    public static void main(String[] args) {

        Boolean flag = true;

//        long start = System.currentTimeMillis();

        for(int i = 200;i <= 300;i++){
            for(int j = 2;j <= Math.sqrt(i);j++){
                if(i % j == 0){     // i 被 j 整除,不是质数
                    flag = false;   // flag 置为false
                    break;
                }
            }
            if(flag == true){
                System.out.print(i + " ");
            }
            flag = true;            //将 flag 重置为 true
        }

//        long end = System.currentTimeMillis();
//        System.out.println("所花费的时间为:" + (end - start));
    }
}

输出结果:

211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293