素数的定义是:除了1和本身外,不存在整除这个整数本身的整数。
主要思想如下:
在所求区间内剔除能被2整除的整数,
在所求区间内剔除能被3整除的整数,
。
。
。
在所求区间内剔除能被sqrt(num_Max)整除的整数,
由于在以上步骤中有重复和无效的判断,所以进行了小的优化:在剔除能被 i 整除的整数操作中,可以直接从 i * 2 开始判断;在判断前也可先加一个判断是否已经是素数。
实例代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define num 100
int main()
{
int a[num+1];
for (int i = 0; i < num + 1; i++) {
a[i] = i;
}
a[1] = 0;//1不是素数
for (int i = 2; i<sqrt((double)num); i++) {
for (int j = i *2; j <= num; j++) {
if (a[j] != 0 && a[j] % i == 0) {
a[j] = 0;
}
}
}
for (int i = 1; i<num + 1; i++)
{
if (a[i] != 0)
{
printf("%d ", a[i]);
}
}
return 0;
}