PAT 1013 数素数

来源:互联网 发布:超市收银软件免费版 编辑:程序博客网 时间:2024/06/06 03:53

Problem:

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

Input:

输入在一行中给出M和N,其间以空格分隔。

Output:

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

Input Example:

5 27

Output Example:

11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103

Tip:

不能单纯使用素数判断的方法,否则会导致超时。

Code:

import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        String[] tmp = sc.nextLine().trim().split(" ");        int start = Integer.parseInt(tmp[0]);        int end = Integer.parseInt(tmp[1]);        int t = 0;        for (int i = 2;; i++) {            if (f(i)) {                t++;                if (t > end) {                    break;                } else if (t >= start) {                    if (t == end) {                        System.out.print(i);                    } else if ((t - start) != 0 && (t - start + 1) % 10 == 0) {                        System.out.println(i);                    } else {                        System.out.print(i + " ");                    }                }            }        }    }    private static boolean f(int num) {        //筛选掉所有非2偶数        if (num != 2 && num % 2 == 0) {            return false;        }        for (int i = 3; i <= Math.sqrt(num); i++) {            if (num % i == 0) {                return false;            }        }        return true;    }}
原创粉丝点击