博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法模板——线性筛素数
阅读量:6333 次
发布时间:2019-06-22

本文共 923 字,大约阅读时间需要 3 分钟。

实现功能:如题,筛出1——N内的所有素数

原理:如phile神犇所言,这次的才算是真正意义上的线性筛素数,其精髓在于if (i mod a[j])=0 then break;

因为——如果眼下的a[j]已经是i的因数了,则意味着即使再进行b[i*a[j]]:=1,那么I*b[j]也必然会被其他的数以同样的操作覆盖到,所以可以退出了,这个算法的思想在于减少重复劳动(鸣谢qcgrxx神犇,)

 

1 var 2    i,j,k,l,m,n:longint; 3    a,b:array[0..1000000] of longint; 4 begin 5      readln(n);b[1]:=1;b[0]:=1; 6      for i:=2 to n do 7          begin 8               if b[i]=0 then 9                  begin10                       inc(m);11                       a[m]:=i;12                  end;13               for j:=1 to m do14                   begin15                        if a[j]>(n div i) then break;16                        b[a[j]*i]:=1;17                        if (i mod a[j])=0 then break;18                   end;19          end;20      while true do21            begin22                 readln(m);23                 writeln(b[m]=0);24            end;25 end.

 

转载于:https://www.cnblogs.com/HansBug/p/4486717.html

你可能感兴趣的文章
R学习笔记 第五篇:字符串操作
查看>>
在Mac OS下配置PHP开发环境
查看>>
(转)介绍下Nuget在传统Asp.net项目中的使用
查看>>
C# ArcEngine 实现点击要素高亮并弹出其属性
查看>>
初识GO语言——安装Go语言
查看>>
SDK命令行操作
查看>>
基于Bootstrap的DropDownList的JQuery组件的完善版
查看>>
EXTJS学习系列提高篇:第二十四篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--阅增删改篇...
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
判断二叉树是否平衡、是否完全二叉树、是否二叉排序树
查看>>
并查集的应用之求解无向图中的连接分量个数
查看>>
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>