ZJNU - 1433 [a,b]区间素数的个数

来源:互联网 发布:蒙语输入法软件下载 编辑:程序博客网 时间:2024/05/29 11:44

1.题面

http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1433

2.题意

给出A,B求A,B之间有几个素数

3.思路

因为范围不大,直接用线性筛法处理出来就好,此题只是一个挂上来的模板。

4.代码

/*****************************************************************    > File Name: Cpp_Acm.cpp    > Author: Uncle_Sugar    > Mail: uncle_sugar@qq.com    > Created Time: 2016年05月05日 星期四 20时48分43秒*****************************************************************/# include <cstdio># include <cstring># include <cctype># include <cmath># include <cstdlib># include <climits># include <iostream># include <iomanip># include <set># include <map># include <vector># include <stack># include <queue># include <algorithm>using namespace std;# ifdef ONLINE_JUDGE struct QuickIO{QuickIO(){const int SZ = 1<<20;setvbuf(stdin ,new char[SZ],_IOFBF,SZ);setvbuf(stdout,new char[SZ],_IOFBF,SZ);}//*From programcaicai*//}QIO;# endifconst int debug = 1;const int size  = 1000000 + 10; const int INF = INT_MAX>>1;typedef long long ll;int MAXNUM = size;bool *isprime;int *prime,prim_len = 0;void PrimerTable(int maxn){isprime = new bool[maxn];prime = new int[maxn];fill(isprime,isprime+maxn,true);isprime[0] = isprime[1] = false;for (int i=2;i<maxn;i++){if (isprime[i])prime[prim_len++] = i; for (int j=0;j<prim_len&&prime[j]*i<maxn;j++){isprime[prime[j]*i] = false;if (i%prime[j]==0)break;}}}int ans[size];int main(){std::ios::sync_with_stdio(false);cin.tie(0);int i,j;int a,b;PrimerTable(MAXNUM);for (i=2;i<MAXNUM;i++)ans[i] = ans[i-1] + isprime[i];while (cin >> a >> b){cout << ans[b] - ans[a-1] << endl;}return 0;}


0 0
原创粉丝点击