构造素数表去除非素数
通过构造一个表isPrime来对应1-24中哪些数是素数,初始化isPrime所有元素为1(默认均为素数),通过判断1-24是否是isPrime[x]==1
的对应元素的倍数,若是,即为非素数,将其对应的isPrime位置标记为0,反之。
最后得到的isPrime表,即为标注1-24中哪些为素数的表(标记为1为素数)。最后输出对应isPrime表中为1的数即可。
#include <stdio.h>
int main()
{
const int maxNumber = 25;
int isPrime[25];
for (int i = 0; i < maxNumber;i++)
{
isPrime[i] = 1;
}
isPrime[0] = 0;
{
printf("Debug:\n\t");//调试区
for(int i=2;i<maxNumber;i++)
{
printf("%-3d", i);
}
printf("\n");
}
for (int x = 2; x < maxNumber;x++)
{
if(isPrime[x])
for (int i = 2; i * x < maxNumber;i++)
isPrime[i * x] = 0;
printf("%d\t", x);//调试区
for (int i = 2; i < maxNumber;i++)
printf("%-3d", isPrime[i]);
printf("\n");
}
printf("Result:\n");
for (int i = 2; i < maxNumber;i++)
{
if(isPrime[i])
printf("%-3d", i);
}
printf("\n");
return 0;
}
运行结果
