基本思想:用筛法求 素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
#include<stdio.h>
#define N 100000
void sifter(int num);
int main()
{
int num;
printf("请输入一个数:");
scanf("%d", &num);
printf("\n");
sifter(num);
}
void sifter(int num){
int i, j, k, tot = 0, prim[N] = {0}, dp[N] = {0};
for(i = 2; i <= num; i++){
if(dp[i]) continue;
prim[tot++] = i;
for(j = i; j * i <= num; j++){
dp[i * j] = 1;
}
}
for(k = 0; k < tot; k++){
printf("%d ", prim[k]);
}
}