蓝桥杯题目

[蓝桥杯]用筛法求之N内的素数

2020-01-30  本文已影响0人  二十五六岁的你

问题 1084: 用筛法求之N内的素数。

时间限制: 1Sec 内存限制: 64MB 提交: 8861 解决: 5268

题目描述

用筛法求之N内的素数。

输入

N

输出

0~N的素数

样例输入

100

样例输出

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

方法一:

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-01-27
 * Time: 13:25
 * Description:
 */
public class 用筛法求之N内的素数 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                if (ss(i)) {
                    System.out.println(i);
                }
            }
        }
    }

    private static boolean ss(int i) {
        if (i < 2) {
            return false;
        }
        int flag = 0;
        for (int j = 2; j * j <= i; j++) {
            if (i % j == 0) {
                flag++;
            }
        }
        if (flag != 0)
            return false;
        return true;
    }
}

方法二:

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: 76147
 * Date: 2020-01-27
 * Time: 13:39
 * Description:
 */
public class 用筛法求之N内的素数2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int arr[] = new int[10001];
            arr[0] = arr[1] = 1;
            for (int i = 1; i < n + 1; i++) {
                if (arr[i] == 0) {
                    for (int j = i + i; j < n + 1; j += i) {
                        arr[j] = 1;
                    }
                }
            }

            for (int i = 0; i < n + 1; i++) {
                if (arr[i] == 0)
                    System.out.println(i);
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读