数组构造素数表2

  • 构造n以内(不含n)的素数表算法
  1. 开辟prime[n],初始化其所有元素为1,prime[x]为1表示x为素数
  2. 令x=2
  3. 如果x是素数,则对于(i=2;x*i<n;i++)令prime[i*x]=0,即如果x是素数则2x、3x、4x……均不是素数
  4. 令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;
}

猜你喜欢

转载自blog.csdn.net/qq_26565435/article/details/82221633