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

问题 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);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容