这道题不能用素数表,会爆掉的,我纠结了很久....
#include<stdio.h>
#include<math.h>
int prime(int x){
int i;
if(x%2==0&&x!=2)
return 0; //此处剪枝可以提高效率,要不超时
for(i=3;i<=sqrt((double)x);i+=2)
{
if(x%i==0)
return 0;
}
return 1;
}
int main(){
int n,m;
int i;
while(scanf("%d",&n)!=EOF)
{
int count=0;
for(i=0; i<n; i++)
{
scanf("%d",&m);
if(prime(m))
count++;
}
printf("%d\n",count);
}
return 0;
}