其代码如下:
#include<stdio.h>
#define MAXNUM 1000
void main()
{
int i,j,c=0;
int prime[MAXNUM+1]; /*建立数组,i对应的元素为1,则i为素数*/
prime[0]=prime[1]=0;
for(i=2;i<=MAXNUM;i++)
{
prime[i]=1; //先让所有的元素为1
}
for(i=2;i*i<=MAXNUM;i++)
{
if(1==prime[i]) //若该元素已被排除,则不再求其倍数
{
for(j=i;i*j<=MAXNUM;j++)
{
prime[i*j]=0; //将非素数置0
}
}
}
for(i=2;i<=MAXNUM;i++) //输出
{
if(1==prime[i])
{
printf("%4d",i);
c++;
if(0==c%10)
{
printf("\n");
}
}
}
printf("\n共有%d个素数\n",c);
getchar();
}
素数筛选算法
本文介绍了一个使用埃拉托斯特尼筛法(Sieve of Eratosthenes)寻找指定范围内所有素数的C语言程序。该算法通过迭代标记合数的方式高效地找出所有素数,并在屏幕上显示出来。
968

被折叠的 条评论
为什么被折叠?



