问题:给出n(<=1e5),统计小于等于n的质数个数;
思路:多个输入输出,采用初始化方法;
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#define ll long long
using namespace std;
const ll maxa=1e5+10;
int dp[maxa];
bool prime(ll n){
if(n==2) return true;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0) return false;
return true;
}
void init(){
memset(dp,0,sizeof dp);
dp[2]=1;
for(int i=3;i<=maxa;i++){
if(prime(i)) dp[i]+=dp[i-1]+1;
else dp[i]=dp[i-1];
}
}
int main(){
ll t,n;
init();
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
printf("%lld\n",dp[n]);
}
return 0;
}