http://acm.hdu.edu.cn/showproblem.php?pid=2138
Problem Description
Give you a lot of positive integers, just to find out how many prime numbers there are.
Input
There are a lot of cases. In each case, there is an integer N representing the number of integers to find. Each integer won’t exceed 32-bit signed integer, and each of them won’t be less than 2.
Output
For each case, print the number of prime numbers you have found out.
Sample Input
3 2 3 4
Sample Output
2
Sample Input
3 2 3 4
Sample Output
2
#include <cstdio>
#include <cstring>
#include <cmath>
//bool arr[MAXN+10];
//void fun()
//{
// __int64 i,j;
// memset(arr,1,sizeof(arr));
// arr[1]=0;
// for(i=2;i<MAXN;++i)
// {
// for(j=i*i;j<MAXN;j+=i)
// arr[j]=0;
// }
//}
bool fun(int num)
{
for(int i=2;i<=n;++i)//不要用i*i<=num,因为i*i需要算sqrt(num)次(每一次的i都不一样)会超时,而这样就只需要算一次sqrt(1.0*num)就行
{
if(num%i==0) return 0;
}
return 1;
}
int main()
{
int N;
int temp;
while(~scanf("%d",&N))
{
int cnt=0;
for(int i=1;i<=N;++i)
{
scanf("%d",&temp);
if(fun(temp)) cnt++;
}
printf("%d\n",cnt);
}
}