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

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

考虑这样一件事情:对于任意一个大于 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));
    }
}
相关推荐
救救孩子把7 小时前
AI面试八股文-23_23-Agent可观测性与生产监控面试题
人工智能·面试·职场和发展·agent·langsmith·langfuase
李某学编程8 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
sbjdhjd9 小时前
AI产业周度动态:从“更强模型”走向“可执行、可治理、可计价”的系统竞争 (2026年10月19日—10月25日)
人工智能·笔记·ai·开源·gemini·信息差·claude code
ss27310 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
深圳老胡11 小时前
压力检测空吸功能硬件方案全解析:主流压力传感器品牌与实现路径
笔记·单片机·代码规范
程序猿追11 小时前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
考研保研资料分享11 小时前
2023历史学跨保山大马理论:两轮笔面试、课程论文与方向取舍
面试·职场和发展
崔高杰12 小时前
【多论文阅读笔记】下一阶段,Agent记忆关注什么能力?
论文阅读·笔记
ms72wx12 小时前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
yuanxi20013 小时前
大众汽车集团或暂停印度电动汽车投资:PSS⁵谈判力视角
职场和发展·创业创新·学习方法