整理的算法模板合集: ACM模板


目录

不能算是Min_25筛,该模板只是在较短时间内求1e11~1e12内的素数和

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1000010;
int prime[N], id1[N], id2[N], flag[N], ncnt, m;
ll g[N], sum[N], a[N], T;
ll n;
int ID(ll x) {return x <= T ? id1[x] : id2[n / x];
}
ll calc(ll x) {return x * (x + 1) / 2 - 1;
}
ll f(ll x) {return x;
}
ll init(ll n){T = sqrt(n + 0.5);for (int i = 2; i <= T; i++) {if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + i;for (int j = 1; j <= ncnt && i * prime[j] <= T; j++) {flag[i * prime[j]] = 1;if (i % prime[j] == 0) break;}}for (ll l = 1; l <= n; l = n / (n / l) + 1) {a[++m] = n / l;if (a[m] <= T) id1[a[m]] = m; else id2[n / a[m]] = m;g[m] = calc(a[m]);}for (int i = 1; i <= ncnt; i++)for (int j = 1; j <= m && (ll)prime[i] * prime[i] <= a[j]; j++)g[j] = g[j] - (ll)prime[i] * (g[ID(a[j] / prime[i])] - sum[i - 1]);
}
ll solve(ll x){if(x<=1){return x;}return n=x,init(n),g[ID(n)];
}
int main() {int t = 1;while(t-- ) {memset(g,0,sizeof(g));memset(a,0,sizeof(a));memset(sum,0,sizeof(sum));memset(prime,0,sizeof(prime));memset(id1,0,sizeof(id1));memset(id2,0,sizeof(id2));memset(flag,0,sizeof(flag));ncnt=m=0;scanf("%lld", &n);printf("%lld\n", solve(n));}
}

模板 - Min_25 筛法求素数和相关推荐

  1. 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】

    素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...

  2. 一般筛法和快速线性筛法求素数 求素数的一点总结

    素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...

  3. 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)

    一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...

  4. 一般筛法求素数+快速线性筛法求素数

    一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报  分类: 算法学习资料(5)  版权声明:本文为博主原 ...

  5. CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)

    题目链接:http://codeforces.com/problemset/problem/236/B Easy Number Challenge time limit per test 2 seco ...

  6. 1042: 筛法求素数

    1042: 筛法求素数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1387  Solved: 918 [Submit][Status][Web B ...

  7. 素数筛法求素数(线性时间)

    摘自:http://blog.csdn.net/once_hnu/article/details/6302283 逆向思维的典型应用! 1)普通方法判断素数:O(n*sqrt(n)) 2)筛法求素数: ...

  8. 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验

    普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...

  9. 筛法求素数 (20分)

    题干: 素数是仅仅能被它本身和1整除的任何整数.筛法求素数是一种查找素数的方法.它的算法如下: 1.创建一个数组,并将所有元素初始化为1(真).具有素数下标的数组元素将保持为1,而其它数组元素最终将被 ...

最新文章

  1. mysql修改binlog格式_mysql binlog格式...
  2. Matlab变量及其命名规则
  3. undertale人物_「undertale」传说之下精美人物图包 (SansGaster篇)
  4. tf.layers.dense
  5. java类型提升_java表达式中类型的自动提升(转)
  6. 【UI设计师必备】可临摹精美的APP UI Kit模板
  7. make: *** 没有规则可制作目标“distclean”。 停止。_最全攻略资料|普华永道PwC(四大笔试)游戏测试GBA经验分享(图片+规则+建议)...
  8. 最新更新云码支付,星糖付多合一全自动码商,商户,代理,支付一体系统完整数据源码
  9. #PLC_一次看懂数位低通滤波器设计(含代码实现)
  10. Go 1.9 sync Map 源码阅读笔记
  11. Python17_项目实操关卡-人机PK
  12. 吐血分享:QQ群霸屏技术教程2017(活跃篇)
  13. bixby怎么编程_三星的Bixby很烂。 这是如何将其关闭。
  14. ANSYS软件许可证优化,高效提升工作效率
  15. WebView---android webview组件如何使用 Webview与js交互
  16. volatile作用
  17. egret新手引导反向遮罩
  18. 股票技术指标详解--顺势指标(CCI)
  19. c语言窗口内鼠标位置,Gtk获取窗口内光标 | 指针 | 鼠标的绝对和相对坐标,绝对和相对位置...
  20. Linux C 信号使用

热门文章

  1. 基于OpenCV实现口罩识别
  2. 一文读懂 RoIPooling、RoIAlign 和 RoIWarp
  3. 还在用肉眼找不同吗?这个技术轻松搞定
  4. 高速上车辆追尾无法移动 众人齐力抬车温暖归途
  5. C++Builder及VC的库相互调用
  6. 非技术成本继续困扰光伏产业
  7. mongodb log ,warning: chunk is larger than 65203623200 bytes because of key
  8. Iterator(迭代器)接口 --对象循环遍历
  9. bash shell的一些基本概念
  10. get 和 post