这道题的范围小,可以用普搜:
#include<bits/stdc++.h>
using namespace std;
bool ss(int n){
if(n<2) return 0;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return 0;
}
return 1;
}
long long n,ans=0;
int main()
{
cin>>n;
for(int i=2;i<=n;i++){
if(ss(i)){
ans++;
}
}
cout<<ans<<endl;
}
当然,也可以用“**”搜素大法:
#include<bits/stdc++.h>
bool f[100000005];
using namespace std;
int main(){
int n,s=1;
cin>>n;
if(n==1){
cout<<0;
return 0;
}
for(int i=2;i*i<=n;i++){
if(!f[i]){
for(int j=2;j*i<=n;j++){
f[j*i]=1;
}
}
}
for(int i=3;i<=n;i++){
if(!f[i]){
s++;
}
}cout<<s<<endl;
return 0;
}