1286.有多少素数 SDNUOJ 1286
Description
给你很多的正整数,只是为了找出有多少素数。
Input
有很多的测试用例,每个测试用例第一行是正整数N,表示要从N个整数中找。每个整数不超过2147483647,其中每个不小于2。
Output
对于每种情况输出素数的个数。
Sample Input
3
2 3 4
Sample Output
2
j * j <= s[i] 就TLE
j <= sqrt(s[i]) 就AC
AC代码
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
int s[1000];
int main()
{
int n;
while(~scanf("%d",&n))
{
int sum = 0;
for(int i = 0; i < n; i++)
scanf("%d", &s[i]);
for(int i = 0; i < n; i++)
{
int j;
for(j = 2; j <= sqrt(s[i]); j++)
if(s[i] % j == 0)
break;
if(j > sqrt(s[i]))
sum++;
}
printf("%d\n", sum);
}
return 0;
}
TLE代码
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
int s[1000];
int main()
{
int n;
while(~scanf("%d",&n))
{
int sum = 0;
for(int i = 0; i < n; i++)
scanf("%d", &s[i]);
for(int i = 0; i < n; i++)
{
int j;
for(j = 2; j * j <= s[i]; j++)
if(s[i] % j == 0)
break;
if(j * j> s[i])
sum++;
}
printf("%d\n", sum);
}
return 0;
}