首页 > 其他分享 >欧拉筛

欧拉筛

时间:2024-01-20 16:37:00浏览次数:31  
标签:int 筛出 素数 MAXN isprime 欧拉

欧拉筛

bool isprime[MAXN]; // isprime[i]表示i是不是素数

int prime[MAXN]; // 现在已经筛出的素数列表

int n; // 上限,即筛出<=n的素数

int cnt; // 已经筛出的素数个数

 

void euler()

{

    memset(isprime, true, sizeof(isprime)); // 先全部标记为素数

    isprime[1] = false; // 1不是素数

    for(int i = 2; i <= n; ++i) // i从2循环到n(外层循环)

    {

        if(isprime[i]) prime[++cnt] = i;

        // 如果i没有被前面的数筛掉,则i是素数

        for(int j = 1; j <= cnt && i * prime[j] <= n; ++j)

        // 筛掉i的素数倍,即i的prime[j]倍

        // j循环枚举现在已经筛出的素数(内层循环)

        {

            isprime[i * prime[j]] = false;

            // 倍数标记为合数,也就是i用prime[j]把i * prime[j]筛掉了

            if(i % prime[j] == 0) break;

            // 最神奇的一句话,如果i整除prime[j],退出循环

            // 这样可以保证线性的时间复杂度

        }

    }

}

 

标签:int,筛出,素数,MAXN,isprime,欧拉
From: https://www.cnblogs.com/mingzhaomz/p/17976678

相关文章

  • 欧拉定理学习笔记
    费马小定理\(a,p\in\mathbb{Z_+}\),\(p\)为质数,\(\gcd(a,p)=1\)。定理:\(a^{p-1}\equiv1\pmodp\)。证明:考虑下面两个整数集合:\[A=\{x\in\mathbb{Z_+}|1\lex<p\}\]\[B=\{y\in\mathbb{Z_+}|y=ax,x\inA\}\]\(A\)中很明显每个数对\(p\)取余各不相同......
  • 图论——浅谈理论,DFS序和欧拉序
    图论——浅谈理论,DFS序、时间戳和欧拉序提示:本文在树论基础上。下文图例DFS序:124579836.欧拉序:124457997885236631.回加欧拉序:124257975852123631.下文举例均指此图。DFS序周所周知,DFS为深度优先遍历,其框架如:voiddfs(i......
  • openEuler欧拉配置MySQL8的MGR单主双从
    一、系统优化(三个节点全部操作)关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld关闭selinuxecho"SELINUX=disabled">/etc/selinux/configecho"SELINUXTYPE=targeted">>/etc/selinux/configcat/etc/selinux/configsetenforce0设置主机名hostn......
  • openEuler欧拉部署Redis
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld关闭selinuxsed-ri's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/configsetenforce0二、安装Redisdnf-yinstallredisvim/etc/redis.conf#bind127.0.0.1bind0.0.0.0protected-mo......
  • openEuler欧拉部署Jenkins
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装Jenkinsdnf-yinstalldockerdockersearchjenkinsdockerpulljenkins/jenkinsmkdir-p/home/jenkinsdockerrun-d--namejenkins-uroot-p8080:8080-p50000:50000-v/home/jen......
  • openEuler欧拉部署Harbor
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装Harborwgethttps://github.com/goharbor/harbor/releases/download/v2.8.1/harbor-offline-installer-v2.8.1.tgztarxvfharbor-offline-installer-v2.8.1.tgzdf-hmvharbor//homecd......
  • openEuler欧拉安装Jenkins并修改构建workspace路径
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld关闭selinuxsed-ri's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/configsetenforce0二、安装Jenkinssudowget-O/etc/yum.repos.d/jenkins.repohttps://pkg.jenkins.io/redhat-stable/je......
  • openEuler欧拉系统重置root密码
    步骤:系统启动时,出现如下页面,按e进入内核编辑模式进入如下页面按下光标后,找到linux开头这一行,修改ro为rw,并在行尾添加init=/bin/sh,修改后效果如下,在crtl+x保存后开始进入如下页面执行修改密码操作,指令如下#修改root密码命令echo'87654321'|passwd--stdinroot#如果系统的sel......
  • openEuler欧拉使用sshpass不输入密码远程登录其他服务器
    ssh登陆不能在命令行中指定密码,sshpass的出现则解决了这一问题。用-p参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。操作步骤:一、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装sshpassdnf-yinstallsshpass三......
  • 【数学/数论】欧拉函数 - Phi
    引言自Mr.果讲了CF1900D之后,决定复习n月之前学习的知识:欧拉函数。\[\Large{{一、\underline{定义}}}\]\[\scriptsize\mathsf{一切的开始}\]欧拉函数,即\(\varphi(x)\)。\[\varphi(x)=\sum_{i=1}^{x}[\gcd(x,i)=1]\]它表示小于等于\(x\)的数中,与\(x\)......