筛法求素数
介绍
用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。[百度百科]
举例
//这是普通的方法求素数
#include <stdio.h>
#include <math.h>
int is_prime(int a)
{
int i;
for(i = 2;i<=sqrt(a);i++)
if(a % i == 0)
return 0;
return 1;
}
int main()
{
int n,i;
while(scanf("%d",&n),n)
{
for(i = 2;i<=n;i++)
if(is_prime(i))
printf("%d ",i);
}
return 0;
}
//这是用筛法求素数
#include <stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i = 2;i<n;i++)
{
if(!(i%2 == 0||i%3 == 0||i%5 == 0||i %7 == 0) || i == 2 || i==3 ||i==7||i==5)
printf("%d ",i);
}
return 0;
}