news 2026/4/18 5:17:50

算法学习——素数筛法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法学习——素数筛法

素数:一个大于1的自然数,除了1和它本身以外不再有其他因数的数称为素数。

合数:一个大于1的自然数,除了1和它本身以外还有其他因数的数称为合数。

因数:整数a除以整数b(b≠0)的商正好是整数而没有余数,称b是a的因数。

一、试除法

一次次试看能不能被因子整除。

int is_prime(int n) { //这里用i<=n/i,防止溢出,如i=1e6 for (int i = 2;i <= n / i;i++) { if (n % i == 0) return 0; } return 1; }

二、埃式筛法——接近线性O(logN)

素数的倍数一定是合数。找出合数,剩下都是素数。

#include<iostream> #include<vector> using namespace std; const int n = 1e6 + 10; //创建一个bool数组来标记素数 //初始时假设所有数都是素数 vector <bool> isPrime(n + 1, true); int main() { //遍历2~sqrt(n)的所有数 for (int p = 2;p <= n / p;p++) { //如果p是素数 if (isPrime[p]) { //标记p所有的倍数为非素数 for (int i = p * p;i <= n;i += p) isPrime[i] = false; } } return 0; }

三、欧拉筛法——线性

埃式筛有一些重复标记,欧拉筛去除了这些标记。

整数唯一分解定理:任何大于1的正整数n都可以唯一分解为有限个质数的乘积,任何合数都有他对应的一个最小质因子。只通过这个最小质因子将其标记,这样就避免了重复标记。

每个数都只被它的最小质因数筛去。

#include<iostream> #include<bitset> using namespace std; const int maxn = 1e6 + 10; bitset<maxn> pri;//0为素数,1为合数 int primes[maxn]; int pp = 0; int main() { int N = 1e6; int cnt = 0; for (int i = 2;i <= N;i++) { if (!pri[i]) { primes[pp] = i; pp++; } for (int j = i;j <= pp;j++) { pri[primes[j] * i] = 1; if (i % primes[j] == 0) break; } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 14:52:18

代价函数,矩阵的计算

假设函数: h(x) a b*x 我们根据假设函数来进行图形的绘制与我们的数据进行比对 上图中的cost function即为代价函数为了更好的理解代价函数我们可以使用空间立体图形来对代价函数进行描述&#xff0c;对于一组数据而言我们根据其假设函数可以得出其代价函数&#xff0c;我们将…

作者头像 李华
网站建设 2026/4/16 21:27:15

低代码赋能供应商管理:打破管理壁垒,重塑供应链效能

在企业数字化转型浪潮中&#xff0c;供应链作为核心竞争力的重要载体&#xff0c;其稳定与高效直接关乎企业生存发展。而供应商管理作为供应链体系的关键一环&#xff0c;传统管理模式的痛点日益凸显&#xff0c;亟需全新技术手段破局。低代码平台凭借灵活、高效的特性&#xf…

作者头像 李华
网站建设 2026/3/22 6:06:05

从IPD实践者到研发体系架构师:(二)以“岐黄之术”的望闻问切,透视研发体系健康度与瓶颈

研发体系是企业创新核心引擎&#xff0c;其健康度直接决定技术竞争力与长期生命力。研发投入产出失衡、流程碎片化、资源配置低效等共性痛点&#xff0c;制约企业突破发展&#xff0c;精准评估研发体系健康状态、定位症结&#xff0c;是提升研发效能的关键。正如中医诊疗“治病…

作者头像 李华
网站建设 2026/4/17 20:04:56

CANN模型量化实战:INT8推理加速与精度保持

引言 模型量化是将浮点模型转换为低精度整数模型的技术&#xff0c;可以显著降低模型大小、提升推理速度并减少功耗&#xff0c;是模型部署的重要优化手段。华为CANN平台提供了完善的量化工具链&#xff0c;支持训练后量化和量化感知训练&#xff0c;能够在保持模型精度的同时…

作者头像 李华
网站建设 2026/4/3 5:10:20

你可能需要的算法思想——哈希表

在很多算法问题中&#xff0c;我们需要知道某个元素是否出现过、出现了几次&#xff0c;第一次出现的位置在哪里。如果用数组或列表&#xff0c;查找通常需要线性扫描&#xff0c;时间复杂度是 O(n)。即使通过排序配合二分查找&#xff0c;将查找复杂度降为 O(log n)&#xff0…

作者头像 李华
网站建设 2026/4/4 8:31:23

如何高效维护单机版本app和联网版本app

如何高效管理“两个App”的挑战&#xff1f;虽然维护两个版本会增加工作量&#xff0c;但通过合理的架构设计和技术管理&#xff0c;可以大幅降低维护成本。以下是具体方案&#xff1a;方案一&#xff1a;模块化架构 条件编译&#xff08;最推荐的技术方案&#xff09; 这是解…

作者头像 李华