题目描述
求指定区间内素数的个数
输入
多组输入,每行两个整数l,r 0<=l, r <=1000000
输出
一个整数,为区间[l, r)素数的个数,占一行
样例输入
1 3
2 6
样例输出
1
3
题目描述
求指定区间内素数的个数
输入
多组输入,每行两个整数l,r 0<=l, r <=1000000
输出
一个整数,为区间[l, r)素数的个数,占一行
样例输入
1 3
2 6
样例输出
1
3
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
#define MAX 1000001
bool p[MAX];
int l,r;
void Prime()
{
memset(p,0,sizeof(p));
int la=sqrt(double(MAX));
p[0]=p[1]=1;
for (int i=2;i<=la;i++)
{
if (!p[i])
{
for (int j=2;j<MAX;j++)
{
int r=i*j;
if (r>=MAX) break;
if (!p[r]) p[r]=!p[r];
}
}
}
}
int main()
{
Prime();
while (cin>>l>>r)
{
int sum=0;
for (int i=l;i<r;i++)
{
if (!p[i]) sum++;
}
cout<<sum<<endl;
}
return 0;
}