初阶OI素数算法——埃拉托尼斯筛

简介: 时间复杂度比较优秀且易于理解的素数筛选法

埃拉托尼斯筛

  • 前言
    在探究埃拉托尼斯筛之前,让我们先回顾一下线性筛选素数的方法。
    如果有数a为合数,那么一定存在素数x|a,且x^2<=a。
    代码如下:
    bool prime_judge(int x);
      for(int i=2;i*i<=x;i++) //这种写法相比于i<=sqrt(x)可以省去一些不必要的麻烦 
          if(x%i==0) return 0;
      return 1;
    
  • 埃拉托尼斯筛的实现
    void fine_prime(int n,bool a[]){
      //引入的数组应是一个全局的,故不需要初始化,当然初始化也没问题
      //1为素数,0为合数
      a[0]=a[1]=1;//1和0是素数
      for(int i=2;i*i<=n;i++){//0和1不用讨论了 节省时间复杂度 
          if(a[i]==0)
              for(int j=i*2;j<=n;j+=i)
                  a[j]=1;//直接筛去i的倍数 
      } 
    }
    
目录
相关文章
|
7月前
|
算法 搜索推荐 程序员
初阶算法(1):通过简单的排序算法来认识时间复杂度
初阶算法(1):通过简单的排序算法来认识时间复杂度
|
6月前
|
存储 算法 C语言
二叉树的概念和性质/向上调整、向下调整算法/堆的插入和删除/堆排序/Top-K问题【上】【数据结构/二叉树/初阶/C语言实现】
二叉树的概念和性质/向上调整、向下调整算法/堆的插入和删除/堆排序/Top-K问题【上】【数据结构/二叉树/初阶/C语言实现】
26 0
|
8月前
|
存储 算法 Python
信息学奥赛 试除法:高效筛选素数的算法
本文介绍了在Python代码中如何使用试除法高效筛选素数。
88 0
|
7月前
|
算法 搜索推荐 C语言
初阶算法(3):二分法的讲解与实现(C语言),以及二分不止光在有序数组中的应用
初阶算法(3):二分法的讲解与实现(C语言),以及二分不止光在有序数组中的应用
|
7月前
|
算法 搜索推荐
初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度
初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度
|
8月前
|
存储 分布式计算 算法
转:如何利用素数算法加强企业文档管理软件的效能和安全性
利用素数算法来加强企业文档管理软件的效能和安全性,可是个有趣的法子。这可不只是在电影里才看得到的情节,素数算法可以在好几个方面给软件的性能和安全性添点料。下面就来看看有哪些酷炫的方式吧——
75 0
|
存储 算法
【数据结构初阶】第七篇——二叉树的顺序结构及实现(堆的向下,向上调整算法)
【数据结构初阶】第七篇——二叉树的顺序结构及实现(堆的向下,向上调整算法)
【数据结构初阶】第七篇——二叉树的顺序结构及实现(堆的向下,向上调整算法)
|
10月前
|
算法
转:素数算法,看看电脑是怎么找素数的
素数算法主要应用于计算科学,密码学和数论等领域。例如,在密码学中,素数算法用于生成密钥;在数论中,素数算法用于研究质数分布。素数算法的历史可以追溯到公元前300年左右的古希腊数学家,他们发现了素数的重要性。随着数学和计算机科学的发展,素数算法也在不断改进和提高。
158 2
|
机器学习/深度学习 存储 算法
【数据结构初阶】一、算法的时间复杂度和空间复杂度
目录 一、什么是数据结构 二、什么是算法 三、算法效率 3.1 如何衡量一个算法的好坏 3.2 算法的复杂度
79 0
【数据结构初阶】一、算法的时间复杂度和空间复杂度
|
算法 C语言
【C语言初阶】求两个数的最大公约数,三种算法
给定两个整数,让你求这两个数的最大公约数 最大公约数顾名思义就是:这几个整数共有的约数中最大的一个。
119 0