蓝桥杯练习笔记(十九-质数筛)

很多题涉及质数,比较好的方法是直接生成一个质数数组,要用的时候直接访问就行了,一个比最原始生成质数数组快的比较常用的生成质数算法--埃式筛

考虑这样一件事情:对于任意一个大于 1 的正整数 n,那么它的 x 倍就是合数(x > 1)。利用这个结论,我们可以避免很多次不必要的检测。

如果我们从小到大考虑每个数,然后同时把当前这个数的所有(比自己大的)倍数记为合数,那么运行结束的时候没有被标记的数就是素数了。

参考文章:OI Wiki

java 复制代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        int n=100005;
        ArrayList<Integer> isprime=new ArrayList<>(100005);
        Collections.fill(isprime,1);
        ArrayList<Integer> prime=new ArrayList<>();
        // 通过添加n个元素来确保ArrayList有足够的容量
        for (int i = 0; i <= n; i++) {
            isprime.add(1);
        }
        isprime.set(0,0);
        isprime.set(1,0);

        for(int i=2;i*i<=n;i++)
        {
            if(isprime.get(i)>0)
            {
                prime.add(i);

                for(int j=i*i;j<=n;j+=i)
                {
                        isprime.set(j,0);
                }
            }
        }
        //打印结果
        for(int i=0;i<prime.size();i++)System.out.println(prime.get(i));
    }
}
相关推荐
中屹指纹浏览器8 分钟前
2025技术干货:国内静态 IP 搭配指纹浏览器的加密绑定与跨区域优化方案
经验分享·笔记
Ccjf酷儿26 分钟前
操作系统 李治军 4 设备驱动与文件系统
笔记
大白的编程日记.1 小时前
【计算网络学习笔记】Socket编程UDP实现简单聊天室
网络·笔记·学习
中屹指纹浏览器2 小时前
2025技术综述:指纹浏览器与国内IP适配的核心技术优化与实践
经验分享·笔记
im_AMBER3 小时前
weather-app开发手记 02 JSON基础 | API 调用 400 错误修复 | JWT 认证问题
笔记·学习·json·axios·jwt
阿蒙Amon3 小时前
JavaScript学习笔记:1.JavaScript简介
javascript·笔记·学习
机械电气电机杂谈3 小时前
电机功率因数深度解析:永磁同步电机的物理机制、控制策略与设计优化研究报告
职场和发展·创业创新·制造·学习方法·业界资讯
Vincent_Zhang2333 小时前
专题:通过时间轴解释区分各种时态
笔记
火火PM打怪中4 小时前
空窗期的自我探索
人工智能·职场和发展
_OP_CHEN4 小时前
【算法基础篇】(三十二)动态规划之背包问题扩展:从多重到多维,解锁背包问题全场景
c++·算法·蓝桥杯·动态规划·背包问题·算法竞赛·acm/icpc