筛选法求素数
/*
*本例仅以10000以内所有素数作为范例
*/
#include <stdio.h>
#include <math.h>
#define N 10000
void prime(int n);
int isprime[N+1];
int main(void)
{
int i;
prime(N);
for (i = 0;i <= N;i++)
if (isprime[i] == 1)
printf("%5d",i);
return 0;
}
void prime(int n)
{
int i,j,m;
for (i = 0;i <= n;i++)
isprime[i] = 1;
isprime[0] = isprime[1] = 0;
m = (int)sqrt(n);
for (i = 2;i <= m;i++)
if (isprime[i])
for (j = 2*i;j <= n;j += i) //只要是i的倍数均不可能为素数
isprime[j] = 0;
}
本例使用的编程语言为C语言