题目描述
输入两个整数x和y,输出两者之间的素数个数(包括x和y)。
输入格式
两个整数x和y(1<=x,y<=100000)
输出格式
输出一个整数,表示x,y之间的素数个数(包括x和y)。
输入样例
1 100
输出样例
25
代码展示
咦,小小的问题是,本来写得m=y+1但还是有没通过的用例。改成下面这版m=1e6+5就可以过了。咦咦,这是为什么?
#include<bits/stdc++.h>
using namespace std;
int main(){
//freopen("/config/workspace/test/test","r",stdin);
int x,y;
cin>>x>>y;
int m=1e6+5;
int isprime[m];
for(int i=0;i<=m;i++){
isprime[i]=1;
}
for(int x=2;x<=m;x++){
if(isprime[x]){//构造素数表,素数标1否则标0
for(int i=2;i*x<=m;i++)
isprime[i*x]=0;
}
}
isprime[1]=0;
int count=0;
for(int i=x;i<=y;i++){
if(isprime[i]==1) count++;
}
cout<<count<<endl;
return 0;
}
//闲叙题外话:请把我埋在~在这春天里~