埃筛C++写法

埃筛的作用是找素数(质数),以质数的倍数一定是合数为重心思路。

比如说 2 是质数,但 2 的倍数(除了自己)都是合数。

3 是质数,但 3 的倍数(除了自己)都是合数。
我们针对这个特性,可以用打标法实现。p[x]表示x是否为质数。

cpp 复制代码
void Prime() {
	memset(P, true, sizeof (P));
	for (int i = 2; i <= MAX; i++) {
		if (P[i]) {
			for (int k = i * 2; k <= MAX; k += i) {
				P[k] = false;
			}
		}
	}
}

第二行:起初大家都是质数,后面慢慢删除。

第四行:只要这个数是质数,他的倍数就都是合数(虽然合数的倍数也是合数,但是他已经被它们的公约数标记了)。

第六行:标记合数。

相关推荐
yugi9878386 分钟前
基于遗传算法优化主动悬架模糊控制的Matlab实现
开发语言·matlab
moxiaoran575341 分钟前
Go语言的错误处理
开发语言·后端·golang
yugi9878381 小时前
MATLAB的多层感知器(MLP)与极限学习机(ELM)实现
开发语言·matlab
Never_Satisfied2 小时前
C#获取汉字拼音字母方法总结
开发语言·c#
zh_xuan2 小时前
kotlin 密封类
开发语言·kotlin
码小猿的CPP工坊2 小时前
C++软件开发之内存泄漏闭坑方法
开发语言·c++
Ethan-D2 小时前
#每日一题19 回溯 + 全排列思想
java·开发语言·python·算法·leetcode
Benny_Tang2 小时前
题解:CF2164C Dungeon
c++·算法
满栀5852 小时前
分页插件制作
开发语言·前端·javascript·jquery
froginwe113 小时前
C 标准库 - <stdio.h>
开发语言