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

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

质数筛

const int MAXN = 1e7;int p[MAXN], ptop;void sieve(int n) {    for(int i = 2; i <= n; i++) {        if(!p[i])            p[++ptop] = i;        for(int j = 1, t; j <= ptop && (t = i * p[j]) <= n; j++) {            p[t] = 1;            if(i % p[j])                ;            else                break;        }    }}

欧拉函数筛

其实判断!phi[i]就足够了,不过这样写统一一些。

const int MAXN = 1e7;int phi[MAXN];int p[MAXN], ptop;void sieve(int n) {    phi[1] = 1;    for(int i = 2; i <= n; ++i) {        if(!p[i])            p[++ptop] = i, phi[i] = i - 1;        for(int j = 1, t; j <= ptop && (t = i * p[j]) <= n; ++j) {            p[t] = 1;            if(i % p[j])                phi[t] = phi[i] * (p[j] - 1);            else {                phi[t] = phi[i] * p[j];                break;            }        }    }}

莫比乌斯函数筛

const int MAXN = 1e7;int mu[MAXN];int p[MAXN], ptop;void sieve(int n) {    mu[1] = 1;    for(int i = 2; i <= n; i++) {        if(!p[i])            p[++ptop] = i, mu[i] =  - 1;        for(int j = 1, t; j <= ptop && (t = i * p[j]) <= n; j++) {            p[t] = 1;            if(i % p[j])                mu[t] = -mu[i];            else {                mu[t] = 0;                break;            }        }    }}

转载于:https://www.cnblogs.com/Yinku/p/11450617.html

你可能感兴趣的文章
8丶运行及总结
查看>>
WPF中使用USERCONTROL
查看>>
图片,base64 互转
查看>>
cache—主存—辅存三级调度模拟
查看>>
Java线程的定义
查看>>
Python-面向对象(组合、封装与多态)
查看>>
Mininet
查看>>
COSC2531 Programming Fundamentals
查看>>
设计模式系列 - 访问者模式
查看>>
20180507小测
查看>>
eclipse左侧不见
查看>>
python会缓存小的整数和短小的字符
查看>>
格网与四叉树索引
查看>>
多张照片拍摄、图片浏览
查看>>
html(5) css
查看>>
Azure Web连接到Azure MySql Db
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
windows registry
查看>>
jquery 动画总结(主要指效果函数)
查看>>