本文共 1258 字,大约阅读时间需要 4 分钟。
问题描述
给定区间[L, R] , 请计算区间中素数的个数。
输入格式
两个数L和R。
输出格式
一行,区间中素数的个数。
样例输入
2 11
样例输出
5
数据规模和约定
2 <= L <= R <= 2147483647 R-L <= 1000000
#includeusing namespace std;typedef long long ll;const int MAXN=9999999;int sum=0;bool is_prime[MAXN], vis[MAXN];void getprime(ll a, ll b){ memset(vis, true, sizeof(vis)); for(int i = 0; i < b - a+1; i++) is_prime[i] = true; for(int i = 2; (ll)i * i <=b; i++) { if(vis[i]) { for(int j = 2*i; (ll)j*j <=b; j += i) vis[j] = false; for(ll j=max(2LL,(a+i-1)/i) *i; j <=b; j += i) { is_prime[j-a]=false; } } }}int main(){ ll a, b; ios::sync_with_stdio(false); cin>>a>>b; getprime(a,b); for(ll i = a; i <= b; i++) { if(is_prime[i-a]) sum++; } cout< <
转载地址:http://ixyzi.baihongyu.com/