埃筛(区间筛)
来源:互联网 发布:erp系统模拟软件 编辑:程序博客网 时间:2024/06/14 21:10
题目>>http://codevs.cn/problem/3223/
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int MAXN = 3e6;ll p[MAXN],l,r,ans = 0,cnt = 0;bool used[MAXN],used2[MAXN];int main(){ scanf("%lld%lld",&l,&r); for(ll i = 2;i <= sqrt(r);i ++) //先筛出2~根号r的素数 if(!used[i]) { p[++cnt] = i; for(ll j = i * i;j <= sqrt(r);j += i)//根据唯一分解定理所有的数都是由质数构成的。 used[j] = 1; //对于每一个数只要被一个因数素数筛到那他就会被筛掉。 } for(int i = 1;i <= cnt;i ++) { if(l % p[i] == 0&&l != p[i]) //特判开头 used2[1] = 1; for(ll j = l / p[i] * p[i] + p[i];j <= r;j += p[i])//区间筛:先找到该素数所能筛到的第一个数。 if(j != p[i])//根号r可能远大于l,因此之前的素数不能计入答案。 used2[j - l + 1] = 1; } for(ll i = l;i <= r;i ++) if(!used2[i - l + 1]) ans ++; printf("%lld",ans);}
阅读全文
0 0
- 埃筛(区间筛)
- 区间筛
- 区间筛
- 区间筛法 (埃氏筛变种)
- HDU6069 Counting Divisors(区间素数筛)
- 【线段树】区间求和+区间修改(区间加)
- POJ 2689 Prime Distance(区间相邻素数最大、小距离,区间素数筛)
- 求大区间内素数的个数(区间筛法)
- 区间重合判断(区间覆盖问题)
- HDU3487(splay区间翻转+区间切割)
- 整数、区间与区间端点 (二)
- 整数、区间与区间端点(三)
- 线段树(区间修改,区间查询)
- 树状数组(区间更新区间查询)
- 区间筛法
- 区间素数筛模板
- hdu 6069 区间筛
- hdu 6069 区间筛
- 关于二叉树四种遍历方式以及一些基本操作的方法总结
- Python两个内置函数——locals 、globals 和命名空间说明
- python数据分析(1)——获取微信好友的统计信息
- 人生无题
- B. Inna and Nine----思维题
- 埃筛(区间筛)
- composer使用self-update时zlib_decode()
- [支付宝小程序PHP全栈开发]一、开发前准备工作支付宝小程序注册
- Linux lspci查看硬件设备
- grep -- 文本编辑器
- HDU-1907-John【nimm 博弈】
- Visual Studio 2017 生成dll时无法解析的外部符号 main问题
- Android 组件化-模块化之路——在展示层搭建MVP结构
- Java对象与Json对象的相互转化之Jackson实现方式