素数筛法

基本思想:筛法求 素数的基本思想是:把从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]);
	}
} 

点赞