如下
#include <bits/stdc++.h>
using namespace std ;
int n ;
int ans=0 ;
bool st[1000000] ;
void Ashai (int a) {
memset (st,true,sizeof (st)) ; //将st数组全部为true
st[1] = st[0] = false ; //第一位和第零位为false
for ( int i = 1 ; i <= a ; i ++ ) { //循环每个数
if ( st[i] == true ) { //如果是质数
for ( int j = 2 * i ; j <= a ; j += i ) {
st[j] = false ;
} //把质数的倍数筛掉
}
}
}
int main () {
cin >> n ; //输入n
Ashai (n) ; //调用Ashai这个函数,把n传过去
for ( int i = 1 ; i <= n ; i ++ ) { //循环每个数
if ( st[i] == true ) { //判断i是否为质数
ans ++ ; //质数数量加1
}
}
cout << ans ; //输出答案
//system ("pause"); 由于我用的是vscode所以加了这个,可以忽略
return 0 ;
}