下文中有很多的i,在这里说明i只在其对应的大括号里起作用,不同大括号里的i不同。
#include <STDIO.H>
int main(int argc, char **argv)
{
const int maxNumber = 25; //定义一个常量
int isPrime[maxNumber]; //定义一个数组
int x;
int i;

for (i=0;i<maxNumber;i++) //利用for遍历数组,初始化数组每一位都为1
{ isPrime[i]=1; //表示是素数时,下标对应的元素为1
}

for( x=2; x<maxNumber;x++) //从第一个素数2开始(从1开始1的任何倍数没有意义),x<maxNumber表示maxNumber以内的数。
{
if ( isPrime[x]) //从2开始一直到maxNumber-1执行下面的for循环
{for(i=2;i*x<maxNumber;i++){ //x的i(从2开始×)倍直到<maxNumber的数都不是素数
isPrime[i*x]=0; //i*x不是素数,因此这时候使得数组对应下标为i*x的元素变为0
}
}}

for (i=2;i<maxNumber;i++) //遍历数组,从i=2即第一个素数位置开始
{if (isPrime[i]) //上文已经使得不是素数的数组对应位置的元素变为0,
{printf("%d\t",i); //这时候通过if语句挑选出isPrime[i]=1的i,然后打印。
}
}
printf("\n");
return 0;

}

以上就是我对数组构造素数表的理解。