首页 > 其他分享 >线性筛合集

线性筛合集

时间:2023-09-07 20:57:42浏览次数:30  
标签:约数 const int init ispri 线性 合集

线性筛合集

1. 线性筛素数

void init()
{
    ispri[1]=true;
    for(int i=2;i<=n;i++)
    {
        if(!ispri[i])pri[++cnt]=i;
        for(int l=1;l<=cnt && i*pri[l]<=n;l++)
        {
            ispri[i*pri[l]]=true;
            if(i%pri[l]==0)break;
        }
    }
}

2.线性筛约数个数

const int N=1000010;
const int M=1000000;

int pri[N],d[N],num[N];
bool ispri[N];
int cnt;
/*
    d[i]代表i的约数个数
    num[i]代表i的的小质因子个数
*/
void init()
{
    ispri[1]=true;d[1]=1;num[1]=1;
    for(int i=2;i<=M;i++)
    {
        if(!ispri[i])
        {
            pri[++cnt]=i;
            d[i]=2;
            num[i]=1;
        }
        for(int l=1;l<=cnt && i*pri[l]<=M;l++)
        {
            ispri[i*pri[l]]=true;
            if(i%pri[l]==0)
            {
                num[i*pri[l]]=num[i]+1;
                d[i*pri[l]]=d[i]/(num[i]+1)*(num[i]+2);
                break;
            }
            num[i*pri[l]]=1;
            d[i*pri[l]]=d[i]*d[pri[l]];
        }
    }
}

3.线性筛莫比乌斯函数

const int N=1000010;
const int M=1000000;

int pri[N],mu[N];
bool ispri[N];
int cnt;
/*
    mu[i]代表i的莫比乌斯函数
*/
void init()
{
    ispri[1]=true;mu[1]=1;
    for(int i=2;i<=M;i++)
    {
        if(!ispri[i])pri[++cnt]=i,mu[i]=-1;
        for(int l=1;l<=cnt && i*pri[l]<=M;l++)
        {
            ispri[i*pri[l]]=true;
            if(i%pri[l]==0)
            {
                mu[i*pri[l]]=0;
                break;
            }
            mu[i*pri[l]]-=mu[i];
        }
    }
}

4.线性筛求约数和

const int N=1000010;
const int M=1000000;

int pri[N],sd[N],sp[N];
bool ispri[N];
int cnt;
/*
    sd[i]代表i的约数和
    sp[i]代表i的最小质因子等比数列的和
    sd[i]=(1+p1+p1^2+.....+p1^a1)*(1+p2+p2^2+.....+p2^a2)*...*(1+pi+pi^2+.....+pi^ai)
*/
void init()
{
    ispri[1]=true;sd[1]=1;sp[1]=1;
    for(int i=2;i<=M;i++)
    {
        if(!ispri[i])
        {
            pri[++cnt]=i;
            sd[i]=i+1;
            sp[i]=i+1;
        }
        for(int l=1;l<=cnt && i*pri[l]<=M;l++)
        {
            ispri[i*pri[l]]=true;
            if(i%pri[l]==0)
            {
                sp[i*pri[l]]=sp[i]*pri[l]+1;
                sd[i*pri[l]]=sd[i]/sp[i]*sp[i*pri[l]];    
                break;
            }
            sd[i*pri[l]]=sd[i]*sd[pri[l]];
            sp[i*pri[l]]=1+pri[l];
        }
    }
}

标签:约数,const,int,init,ispri,线性,合集
From: https://www.cnblogs.com/LZMkingNB/p/17686004.html

相关文章

  • PG索引失效合集
    通常来说,优化器分为两种,一种是CBO,即Cost-BasedOptimizer的缩写,直译过来就是“基于成本的优化器”。一种是RBO,是Rule-BasedOptimizer的缩写,直译过来就是“基于规则的优化器”在得到最终的执行计划时,RBO会根据一组内置的规则,去选择执行计划,这就导致了RBO选择的执行计划可能不是最......
  • 即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期。[-1-] 微信后台基于时间序的新一代海量数据存储架构的设计实践[链接] http://www.52im.net/thread-2970-1-1.html[摘要] 时隔3年,微信再次分享了基于时间序的新一代海量数据存......
  • 【HMS Core】推送热门合集
    【问题描述1】推送消息成功,但只收到两条,其余收不到【解决方案】1、您是否开通了消息自分类,因为现在是有咨询营销类消息限制的。没有使用自分类权益的话默认是资讯营销类消息。推送数量管理细则参考2、您可以通过申请自分类权益,来使用服务与通讯类消息,这种是没有这个限制的消息分类......
  • 即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期。[-1-] 微信后台基于时间序的新一代海量数据存储架构的设计实践[链接] http://www.52im.net/thread-2970-1-1.html[摘要] 时隔3年,微信再次分享了基于时间序的新一代海量......
  • Androd 7.0编译错误合集
    1 error:ro.build.fingerprintcannotexceed91bytesbuild/tools/post_process_props.py.Changelinesasfollows:PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128bionic/libc/include......
  • 奇怪的东西合集
    开个坑,记一点平时遇到的奇怪的东西(包括但不限于易错点和各种技巧)。数据结构摩尔投票求区间绝对众数:区间绝对众数定义为区间中出现次数严格大于一半的数。考虑这样一个过程,每次删除区间两个不同元素,若存在区间众数,则最后剩下的数为区间绝对众数,可用线段树维护投票结果;用平衡......
  • 【Python-装饰器】无参数简易装饰器示例合集
    无参数装饰器案例​ 一些简易的不携带参数的装饰器合集,用于学习和巩固装饰器方面的知识,配合vscode的Debug功能或者pythontutor网站的运行流程可视化来查看装饰器的工作原理以及运行时机。1.计时器装饰器#计时器装饰器:用于测量函数执行时间。importtimedeftimer(func):......
  • R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性|
    原文链接:http://tecdat.cn/?p=24334最近我们被客户要求撰写关于贝叶斯线性回归的研究报告,包括一些图形和统计输出。像任何统计建模一样,贝叶斯建模可能需要为你的研究问题设计合适的模型,然后开发该模型,使其符合你的数据假设并运行1.了解 Stan统计模型可以在R或其他统计语言的......
  • git 命令合集 没事给自己看的
    gitremote命令  gitremote-v 作用是显示所有远程仓库  gitremoteshowxx(xx为远程地址的别名)显示某个远程仓库的信息 gitremoteadd[name][url] 作用是添加远程版本库 gitremotermname  gitremoterenameold_namenew_name TRANSLATE......
  • POSTGRESQL WAL 日志问题合集之WAL 如何解析
    最近经常有同学会问关于WAL的问题,问能不能总结一下,这里我们总结关于WALwrite aheadlog的问题的一个系列在PostgreSQL writeaheadlog的解析部分,pg_waldump是必须被提起的工具,并且这个工具在不同的版本中都有变化,pg_waldump工具最早是产生于PG9.3作为一个contribmodule......