求 [a,b]之间的合数个数。
注意,1 既不是质数,也不是合数。
输入格式
输入包含多组测试数据。
每组数据占一行,包含两个整数 a,b。
输出格式
每组数据输出一行答案,表示合数的个数。
数据范围
1≤a≤b≤107,
输入最多包含 10 组数据。
输入样例:
1 10
1 100
输出样例:
5
74
#include<bits/stdc++.h>
using namespace std;
bool is[10000000];
int main()
{
memset(is,true,sizeof(is));
is[0] = false;
for(int i=2;i<=3145;i++)
{
if(is[i])
{
for(int j = 2 ; i*j <10000000; j++)
is[i*j] = false;
}
}
is[1] = true;
int q,w;
while(cin>>q>>w)
{
int sum = 0;
for(int i = q ; i<=w ; i++)
{
if(!is[i])
sum++;
}
cout<<sum<<endl;
}
}