- 构造n以内(不含n)的素数表算法
- 开辟prime[n],初始化其所有元素为1,prime[x]为1表示x为素数
- 令x=2
- 如果x是素数,则对于(i=2;x*i<n;i++)令prime[i*x]=0,即如果x是素数则2x、3x、4x……均不是素数
- 令x++,如果x<n,重复3,否则结束。
具体代码如下:
#include <stdio.h>
int main()
{
int maxNumber=100; //得到100以内的素数表
int isPrime[maxNumber];
int i;
int x;
//isPrime[maxNumber]初始化
for (i=0;i<maxNumber;i++){
isPrime[i]=1;
}
for (x=2;x<maxNumber;x++){ //已知第一个素数为2,故从2开始
if (isPrime[x]){
for (i=2;i*x<maxNumber;i++){ //从2*x开始,逐次计算n*x
isPrime[i*x]=0;
}
}
}
for(i=2;i<maxNumber;i++){
if (isPrime[i]){
printf("%d\t",i);
}
}
printf("\n");
return 0;
}