Eratasthene筛选法
以打印200以内的素数为例
#include<stdio.h>
#include<math.h>
#define SIZE 200
int main(void)
{
//定义数组时要多一个 否则会导致数组下标溢出
int prime[SIZE+1] = { 0 };
//外层循环调用sqrt 且从2开始 <=
for (int i = 2; i <= sqrt(SIZE); i++)
{
if (!prime[i])
{
//内层循环从i*i开始 <= j=j+i结束
for (int j = i * i; j <=SIZE; j += i)
{
prime[j] = 1;
}
}
}
for (int i = 2; i <= SIZE; i++)
{
if (!prime[i])
{
printf("%d\t", i);
}
}
return 0;
}