判断是否为素数

埃拉托斯特尼筛法是一种高效的找出范围内所有素数的方法。

基本思想是:标记所有数倍数为非素数剩下 的就是素数

cpp 复制代码
// 判断是否为素数
vector<bool> getIsPrime(int n) {
	// 判断 找出 0 到 n 的所有素数
	vector<bool> isPrime(n + 1, true);
	// 0 和1 一定不适素数
	isPrime[0] = isPrime[1] = false;
	// 跳过偶数 偶数一定不是素数
	// 这里只是 i++ 要确保 i*i 的范围不超过n
	for (int i = 2; i * i <= n; i++)
	{
		 // 如果当前为素数 那么它的倍数,
		 // 以及对自身的加和一定不是素数
		// 2 4 6 8 16
		if (isPrime[i]) {
			for (int j = i*i; j <= n; j += i)
			{
				// 是修改 j 的值
				isPrime[j] = false;
			}
		}
	}
	return isPrime;
}
相关推荐
Vect__16 小时前
基于线程池从零实现TCP计算器网络服务
c++·网络协议·tcp/ip
草履虫建模19 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq21 小时前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq21 小时前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
爱吃rabbit的mq1 天前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
(❁´◡`❁)Jimmy(❁´◡`❁)1 天前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi1 天前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
CSDN_RTKLIB1 天前
【四个场景测试】源文件编码UTF-8 BOM
c++
不能隔夜的咖喱1 天前
牛客网刷题(2)
java·开发语言·算法
VT.馒头1 天前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript