素数筛选之线性筛选

如何找到1百万这个范围内的素数???
我们用一个数组prime来保存结果
prime[0]保存素数的个数

#define maxn 1000000

int arr[maxn + 5] = {0};

void init(){//这是一种标记法+巧用因子法,如果你不理解,那么请看看素数的概念。
	forint i = 2; i <= maxn; i++){
		if(!arr[i]) prime[++prime[0]] = i;
		for(int j = 1; j <= prime[0]; j++){
			if(prime[j] * i > maxn) break;
			prime[prime[j] * i] = 1;
			if(i % prime[j] == 0) break;
		}
	}
}
发布了48 篇原创文章 · 获赞 5 · 访问量 767

猜你喜欢

转载自blog.csdn.net/weixin_43899266/article/details/103745480