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
思路
直接暴力解题,但是值得注意的是需要注意超时问题,所以需要简化素数的判断,具体为把一个数开方,然后从2到根号n来进行判断。
AC代码
#include<bits/stdc++.h>
using namespace std;
bool fun(int n)//判断素数,如果为素数,则返回true;否则,则返回false。
{
if(n == 0 || n == 1)
{
return false;
}
int i;
for(i = 2; i <= sqrt(n*1.0); i++)//从2到根号n依次进行判断,缩小判断时间
{
if(n % i == 0)
{
return false;
}
}
return true;//
}
int main ()
{
int n, i, k = 0;
while(scanf("%d",&n)!=EOF)
{
for(i = 1; i <= n; i++)
{
int temp;
scanf("%d",&temp);
if(fun(temp) == true)
k++;
}
printf("%d\n",k);
k = 0;
}
}