C语言经典题:用筛选法求100之内的素数

【素数】:又称质数,有无限个,质数定义为在大于1的自然数中除了1和它本身以外的不在有其他因数的数。

源码参考(有注释详解):

#include

int main()
{
int i,j,n,a[101];
//初始化操作,给数组元素赋初值
for (i=1;i<=100;i++)
a[i]=i;
//a[1] 的值为1,1不为素数(定义判断),将其首先挖去
a[1]=0;
//判断2-100内的元素是否为素数(100之内的元素包含1和100)^**:容易混淆**^
for (i=2;i         //外层用于限制循环次数
for (j=i+1;j<=100;j++){ //用当前i(循环除以之后的元素),如果整除则该数不为素数,否则该数为素数
if(a[i]!=0 && a[j]!=0)
if (a[j]%a[i]==0) //用当前i除以i之后的所有元素(j=i+1),这些操作仅仅需要对半操作,不需要进行若干次循环比较
a[j]=0; //为素数将该数组的元素值设为0
    }
//从2开始是因为数组中第一个元素arr[0]没有值,第二个元素为0所以直接从3开始(数组索引从0开始)
for (i=2,n=0;i<=100;i++){
if(a[i]!=0){
printf("%5d",a[i]);
n++;
        }
        if(n==10){ //输出十个数换一行
  printf("\n");
                  n=0;
}
   }
   printf("\n");
   return 0;
}

你可能感兴趣的:(C语言)