【codevs3223】素数密度 埃氏筛法
来源:互联网 发布:手机淘宝改收货地址 编辑:程序博客网 时间:2024/05/04 01:06
题目描述 Description
给定区间[L, R](L <= R <= 2147483647,R-L <= 1000000),请计算区间中素数的个数。
输入描述 Input Description
两个数L和R
输出描述 Output Description
一行,区间中素数的个数
样例输入 Sample Input
2 11
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
详见试题
老题,今天翻出来了…
[a,b]的素数,只需要
的素数表即可。这样我们可以筛出这些素数,然后用这些素数筛[a,b]。
注意,j=max(2ll,(l+i-1)/i)*i
的意思:
(l+i-1)/i
表示大于等于a的i的倍数的最小值。
2则是普遍的i的倍数的最小值,一定不能小于2。
再乘i,j就可以枚举[a,b]之间的合数了。
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int SIZE=1000010;bool vis[SIZE];bool pri[SIZE];typedef long long LL;int main(){ LL l,r; scanf("%lld%lld",&l,&r); for(LL i=2;i<=sqrt(r);i++) { if(!vis[i]) { for(LL j=i*i;j<=sqrt(r);j+=i) vis[j]=1; for(LL j=max(2ll,(l+i-1)/i)*i;j<=r;j+=i) pri[j-l]=1; } } int ans=0; for(int i=0;i<=r-l;i++) if(!pri[i]) ans++; printf("%d",ans); return 0;}/*g++ codevs3223.cpp -o codevs3223.exe -Wall*/
2 0
- 【codevs3223】素数密度 埃氏筛法
- 素数密度
- 素数密度
- codevs 3223 素数密度(埃氏筛法)
- 【数学】素数密度
- wiki3223素数密度
- 【NOIP模拟】素数密度
- 素数密度 (Standard IO)
- 【数论】埃氏筛法&&CODE[VS] 3223 素数密度 = =
- 【NOIP2011模拟9.20】素数密度
- 【NOIP2011模拟9.20】素数密度
- 关于素数分布密度的C++程序
- 【金凌模拟试题】 素数密度
- [模板][洛谷P1835]素数密度(区间筛)
- Codevs 3223 4883 素数密度 2945 计算素数 埃氏筛 || 线性筛
- 【NOIP模拟题】【暴力求解法】2016.11.17 第一题 素数密度 题解
- 埃氏筛法 素数
- 素数 埃氏筛法
- 树莓派外接USB摄像头系列二
- OAuth 2.0 授权原理
- Xsocks 反弹代理s5
- 栈
- 素数问题_算数基本定理
- 【codevs3223】素数密度 埃氏筛法
- 5.3 Flip Bit to Win
- C位运算
- 逐次逼近比较型adc原理
- java 实现WebService 以及不同的调用方式
- hibernate学习心得(二)
- 创建cocos2dx项目
- hdu 1013
- java 不可变类 缓存实例