题意:给出一个数a,求出a的因数中有多少个数是非质数
埃筛,直接打出表来,并且输入输出一定要用scanf,cin加速了也不行!!!
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e6+5;
int ans[maxn];
int isp[maxn];
void isprime()
{
isp[1]=1;
for(int i=2;i<=maxn;i++){
if(!isp[i]){
for(int j=2*i;j<=maxn;j+=i){
isp[j]=1;
}
}
}
}
inline void isans(){
for(int i=1;i<=maxn;i++){
if(isp[i]) {
for(int j=i;j<=maxn;j+=i){
ans[j]++;
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
isprime();
isans();
//cout<<1<<endl;
int a;
//cin>>n;
scanf("%d",&n);
while(n--){
//cin>>a;
//cout<<ans[a]<<endl;
scanf("%d",&a);
printf("%d\n",ans[a]);
}
}