恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

埃氏筛法判断素数

  • 首页
  • 资讯中心
  • /
  • 埃氏筛法判断素数

相关资讯

Nimbalyst 追踪器架构原理:数据库优先设计如何重塑任务管理(完整指南) 2026/10/10 15:00:57
如何 0 成本上手 OpenCode?learn-opencode 教你免费连接 MiniMax、DeepSeek、智谱国产模型 2026/10/10 15:00:57
惠普笔记本预装服务清理指南:禁用与卸载的正确选择 2026/10/10 14:55:57

最新资讯

基于SpringBoot+Vue的健美操评分系统:数据库设计、评分算法与权限管理
5分钟看懂 Agent 在干什么:Agent Flow npx agent-flow-app 快速上手完整教程
5/16 基准第一、GDPval 却垫底:Atria Dawn 是『偏科生』还是『潜力股』?
拆解MoneyPrinter四段流水线:Ollama写稿、TikTok TTS配音、Pexels素材、MoviePy合成如何协作
如何一次备份上百个数据库?Portabase批量备份与恢复功能实战
悬臂梁支座优化:0.71L处弯矩降91.6%的Matlab实现

今日推荐

Codex 总用英文回答?从 AGENTS.md 到 config.toml 的中文输出调优指南
OpenClaw 自定义插件开发完整指南(2026最新版):从 TypeScript 到 npm 发布
基于Spark的电影推荐系统全链路实战:从爬虫到Web展示

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

埃氏筛法判断素数

发布时间:2026/10/10 15:00:57
埃氏筛法判断素数 埃氏筛法Sieve of Eratosthenes核心结论埃氏筛法是一种高效求一定范围内素数的算法通过 “标记非素数” 的思路时间复杂度低至 O (n log log n)适用于小到中等范围的素数求解。基于 “素数的倍数一定是非素数” 的数学性质用 boolean 数组 flag 标记数字状态flag[i] true表示 i 是素数flag[i] false表示 i是非素数。例子以 “求小于等于 30 的素数” 为例步骤如下1. 初始化创建长度为 n1 的 boolean 数组 flag索引对应数字 0~n默认先标记 2~n 为素数flag[2..n] true0 和 1 本身不是素数无需标记为 true。2. 筛选过程从第一个素数 2 开始遍历至 √n优化点大于 √n 的合数必有小于 √n 的因子无需后续遍历。○ 若当前数字 i 的 flag [i] 为 true说明 i 是素数则标记其所有倍数为非素数flag[j] false。○ 标记起点从 ii 开始优化点i2、i3…i(i-1) 已被更小的素数标记过无需重复操作每次累加 i 得到下一个倍数。3. 结果收集遍历 flag 数组收集所有 flag [i] true 的索引 i即为小于等于 n 的所有素数。import java.util.ArrayList; import java.util.Scanner; public class SieveOfEratosthenes{ public static void main(String[]args){ Scanner scnew Scanner(System.in); int nsc.nextInt(); ArrayListIntegerprimesnew ArrayListInteger(); //小于2的地方不判断 if(n2){ return; } //定义一个布尔数组来判断是否为素数 boolean[]flagnew boolean[n1]; for(int i2;in;i){ flag[i]true; //初始化全为素数 } for(int i2;i*in;i){ if(flag[i])/*一个数的倍数一定不是素数 如果一个数没有比他小的因数 他就是素数*/{ for(int ji*i;jn;ji){ flag[j]false;//素数的倍数都定为false } } } for (int i2;in;i) { if (flag[i]) { primes.add(i); } } System.out.println(primes); } }#include bits/stdc.h using namespace std; using lllong long; int main() { ll n; cinn; vectorboolx(n1,true);\\定义n1的长度是为了数组下标就代表数0~n x[0]false; x[1]false;\\0 1不用判断直接写一定不能省略 for(ll i2;in;i) { if(x[i]true)//由于循环是从2一个一个加上来的这个数如果还是true { // 那就证明他不是前面所有的数的一个倍数这恰好就是素数的定义 for(int ki*2;kn;ki) { x[k]false;//如果i是素数那i的从2开始的所有倍数都不是素数了 } } } for(ll i2;in;i)//有个小白问学长学长学长为什么不在刚才判断的时候直接 { //输出素数还要再弄一个循环啊 if(x[i]true) //学长如果题目要求找出1000到100000之间的素数直接把这个循环 couti ; //的i的初始值改一下就好了 } return 0; }

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号