解题报告 之 HOJ2276 SOJ2498 Count prime

来源:互联网 发布:哪些外卖软件首单立减 编辑:程序博客网 时间:2024/06/06 01:29

解题报告 之 HOJ2276 SOJ2498 Count prime


Description

Given an integer interval [L, R](L <= R <= 2147483647, R - L <= 1000000), please calculate the number of prime(s) in the interval.

Input

There is one line in the input, which contains two integer: L, R.

Output

There is only one line , which contains the number of prime(s) in the interval.

Sample Input
2 11
Sample Output
5

题目大意:输出[L,R]之内素数的个数,其中R-L不超过1e6。

分析:这道题L,R的范围很大,用普通素数筛根本无法解决,于是很明显是一道区间素数筛题。大体思想是先求出小范围的素数,然后用小范围的素数去筛大数小区间内的素数。然后统计大数小区间内的素数个数即可。具体步骤是,先取得>=a的第一个素数,然后从素数的两倍开始筛。最后统计一下大数小区间内的素数个数即可。

上代码:
#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int MAXN = 50000;const int MAXM = 1e6 + 10;typedef long long ll;int isprime[MAXN]; //小数字素数判定int isprimeB[MAXM]; //大数素数判定ll prime[MAXN];//小素数ll primeB[MAXM];//大素数int cnt,cntB;void getP()  //线性素数筛,比普通筛更快{for(int i = 1; i < MAXN; i++)isprime[i] = 1;for(int i = 2; i < MAXN; i++){if(isprime[i]){prime[cnt++] = i;}for(int j = 0; j < cnt&&prime[j] * i < MAXN; j++) //采用最小质因子和剩余质因子积的策略来筛{isprime[prime[j] * i] = 0;if(i%prime[j] == 0) break;}}}void getIntP(ll a,ll b)   //区间素数筛{for(int i = 0; i <= b - a; i++) isprimeB[i] = 1;int k;for(int i = 0; i < cnt&&prime[i]*prime[i]<=b; i++){k = a / prime[i];if(k*prime[i] < a) k++;  //求>=a的第一个素数if(k <= 1) k++; //如果k==1则表示是第一个质数,当然不能筛掉,事实上k不可能等于0while(k*prime[i] <= b){isprimeB[k*prime[i] - a] = 0;//筛着走k++;}}cntB = 0;for(int i = 0; i <= b - a; i++){if(isprimeB[i])primeB[cntB++] = i + a;}}int main(){ll a, b;getP();while(cin >> a >> b){ll ans = 0;if(b < MAXN){for(int i = a; i <= b; i++)if(isprime[i]) ans++;}else{cntB = 0;getIntP( a, b );for(int i = 0; i <= b - a;i++)if(isprimeB[i])ans++;}cout << ans << endl;}return 0;}

数论素数篇基本上完结了,下一板块就是poyal和容斥定理。。同余方程,,好想死。,


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 百合球的芽断了怎么办 种的百合开败怎么办 盆栽百合花开完之后怎么办 土养百合花谢了怎么办 多肉叶子不饱满怎么办 冬天富贵竹叶子发黄怎么办水养 富贵竹叶子发黄怎么办水养 水养富贵竹有虫怎么办 水养的富贵竹叶子发黄怎么办 百合花水里的盐放多了怎么办 芦荟叶子发黄干瘪了怎么办 水插百合不开花怎么办 干百合冷水泡了怎么办 牡丹籽油过期了怎么办 ps画布建小了怎么办 腰突然疼的受不了了怎么办 微信里面打不开表格怎么办? 浏览器未正常加载相关控件怎么办 猫的眼睛发炎了怎么办 橡胶手机壳松了怎么办 橡胶手机壳小了怎么办 苹果手机下载不了软件了怎么办 苹果手机浏览器下载不了软件怎么办 小狗吃了硬的棉花怎么办 小狗吃了隔尿垫里的棉花怎么办 眼睫毛掉进眼睛里怎么办 爱掉头发怎么办吃什么 头皮屑多头发干燥脱发怎么办 剪了头发后悔了怎么办 2岁宝宝发际线高怎么办 脱发怎么办吃什么能长发 后面头发睡平了怎么办 鸟羽毛长得不好怎么办 吃激素药头发掉怎么办 吃了药头发掉怎么办 头皮痒头发掉的厉害怎么办 西昌学院被记过了怎么办? 初三了数学太差怎么办 板绘线条不流畅怎么办 嘴被风吹歪了怎么办 被风吹的嘴歪了怎么办