埃筛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;
			}
		}
	}
}

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

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

第六行:标记合数。

相关推荐
愚润求学1 分钟前
【Linux】基础 IO(一)
linux·运维·服务器·开发语言·c++·笔记
oliveira-time10 分钟前
ArrayList和LinkedList区别
java·开发语言
yutian060616 分钟前
C语言中的宏
c语言·开发语言
红衣小蛇妖20 分钟前
Python基础学习-Day23
开发语言·python·学习
June`28 分钟前
专题四:综合练习( 找出所有子集的异或总和再求和)
c++·算法·深度优先·剪枝
越甲八千32 分钟前
windowsC++操作ADB
c++·windows·adb
孞㐑¥33 分钟前
Linux之进程控制
linux·开发语言·c++·经验分享·笔记
Akiiiira36 分钟前
【日撸 Java 300行】Day 14(栈)
java·开发语言
Magnum Lehar40 分钟前
3d游戏引擎的Utilities模块实现下
c++·算法·游戏引擎
一丝晨光1 小时前
数值溢出保护?数值溢出应该是多少?Swift如何让整数计算溢出不抛出异常?类型最大值和最小值?
java·javascript·c++·rust·go·c·swift