暴力过!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int count = 0;
while(n--)
{
int x;
scanf("%d", &x);
int i, j, k;
k = sqrt((double)x);
for( i=2; i <= k; )
{
if(x % i == 0)
break;
if(i % 2 == 1)
i += 2;
else
i++;
}
if(i > k)
count ++;
}
printf("%d\n", count);
}
return 0;
}线性删选做的
时间跟暴力时间一样。。。。。啜泣死!

#include<iostream>
#include<cmath>
#define max_num 10000
using namespace std;
int flag_prime[max_num];
int prime[max_num/3];
int len=0;
void get_prime()
{
int i,j;
for(i=2;i<max_num;i++)
{
if(flag_prime[i] == 0)
prime[len++]=i;
for(j=0;j<len && i*prime[j]<max_num;j++)
{
flag_prime[i*prime[j]]=1;
if(i%prime[j] == 0)
break;
}
}
}
int main()
{
int n;
get_prime();
while(scanf("%d", &n) != EOF)
{
int count = 0;
while(n--)
{
int x;
scanf("%d", &x);
int i, j, k;
if(x <= max_num)
count += flag_prime[x] == 1 ? 0:1;
else
{
k = sqrt((double)x);
for( i=2; i <= k; )
{
if(x % i == 0)
break;
if(i % 2 == 1)
i += 2;
else
i++;
}
if(i > k)
count ++;
}
}
printf("%d\n", count);
}
return 0;
}
本文介绍了两种不同的素数判断算法:一种是直接使用暴力法进行素数判断;另一种则是通过线性筛法预先筛选一定范围内的素数,并结合暴力法判断超出预设范围的数值是否为素数。通过对这两种算法的实现与比较,展示了不同场景下选择合适算法的重要性。
327

被折叠的 条评论
为什么被折叠?



