题解
2024-09-07 11:00:32
发布于:广东
11阅读
0回复
0点赞
前缀和+埃式筛法
#include <bits/stdc++.h>
using namespace std;
const int N = 1000001;
bool a[N];
int pre[N];
int main()
{
int n,m;
cin >> n >> m;
for (int i=0;i<=m;i++)a[i] = 1;
a[1] = 0;
a[0] = 0;
for (int i=2;i<=m;i++)
{
if (a[i] == 1)
{
for (int j=i+i;j<=m;j+=i)
{
a[j] = 0;
}
}
}
pre[0] = 0;
pre[1] = 0;
for (int i=2;i<=m+1;i++)
{
pre[i] = pre[i-1]+a[i];
}
while (n--)
{
int p,q;
cin >> p >> q;
cout << pre[q]-pre[p-1] << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个