利用素数表确定n以内的素数的基本算法思想:

1.确定n的大小,并开辟一个prime数组,将其所有的元素值初始化为1,代表的个位置的下标是素数;

2.定义一个变量下,并给其赋初值为2,让其遍历数组下标;

3.如果x是素数,即prime[x]==1;则对于所有的(i=2;i*x<n;i++)

令prime[i*x]=0;

4.让x自增,并判断x是否小于n,若是,则输出;否则转到3;

5.对于输出素数时,注意输出的是数组元素为1 元素的下标,注意下表是从2向后递增的。

具体的C语言代码如下:

#include<stdio.h>
int main()
{
  int const number=1000;         //确定筛选的范围 
  int prime[number];             //开辟一个整型数组 
  for(int i=0 ; i<number ; i++ )	
     prime[i]=1;                 //将数组初始化,1代表对应的下表为素数,注意要排除0和1; 
  for(int x=2 ; x<number ; x++ ) //从2开始向后筛选; 
     {
     	if(prime[x]==1)          //如果下表对应的数是素数,那么将对于(i=2;i*x<number ;i++)都不是素数 ,将1置为0; 
     	for(int i=2 ; i*x<number ; i++)
     	   prime[i*x]=0;
	 }
   for(int i=2;i<number;i++)     //对素数进行输出; 
      if(prime[i])               //如果数组里面的值是1说明下标对应的自然数是素数 ,注意这里下标的起始值; 
      printf(\"%d\\t\",i);
   printf(\"\\n\");
   return 0;
} 

 

收藏 打印