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

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

考虑这样一件事情:对于任意一个大于 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));
    }
}
相关推荐
做cv的小昊9 小时前
计算机图形学:【Games101】学习笔记05——着色(插值、高级纹理映射)与几何(基本表示方法)
笔记·opencv·学习·计算机视觉·图形渲染·几何学
千寻girling12 小时前
计算机组成原理-全通关源码-实验(通关版)---头歌平台
前端·面试·职场和发展·typescript·node.js
iconball13 小时前
个人用云计算学习笔记 --24 虚拟化、KVM 基础使用与热迁移实验、VMware ESXi笔记
运维·笔记·学习·云计算
a努力。14 小时前
字节Java面试被问:系统限流的实现方式
java·开发语言·后端·面试·职场和发展·golang
是小菜呀!14 小时前
基于深度学习的图像检索系统项目实践
笔记
奕辰杰15 小时前
Netty私人学习笔记
笔记·学习·netty·网络通信·nio
Binky67816 小时前
力扣--回溯篇(2)
算法·leetcode·职场和发展
东东的脑洞16 小时前
【面试突击】Redis 主从复制核心面试知识点
redis·面试·职场和发展
De-Alf16 小时前
Megatron-LM学习笔记(6)Megatron Model Attention注意力与MLA
笔记·学习·算法·ai
polarislove021416 小时前
9.2 自制延迟函数-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件