当前位置: 首页 > news >正文

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(67)混元无极算素数 - 埃拉托斯特尼筛法

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(67)混元无极算素数 - 埃拉托斯特尼筛法

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的数字大陆,大陆上布满了素数灵珠的谜题。大陆的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此大陆,需以混元之力,算素数,埃拉托斯特尼筛法显真身。”

哪吒定睛一看,石碑上还有一行小字:“当n=10时,素数序列为[2, 3, 5, 7]。”哪吒心中一动,他知道这是一道关于素数筛选的难题,需要通过埃拉托斯特尼筛法来解决。

暴力解法:数字大陆的初次尝试

哪吒心想:“要找出素数,我可以逐个检查每个数字是否为素数。”他催动混元之力,通过逐个检查每个数字是否能被小于其平方根的数字整除,试图找出所有的素数。

#include <vector>
#include <cmath>

using namespace std;

vector<int> findPrimes(int n) {
   
    vector<int> primes;
    for (int i = 2; i <= n; ++i) {
   
        bool isPrime = true;
        for (int j = 2; j <= sqrt(i); ++j) {
   
            if (i % j == 0) {
   
                isPrime = false;
                break;
            }
        }
        if (isPrime) {
   
            primes.push_back(i);
        }
    }
    return primes;
}

哪吒成功地找出了素数,但数字大陆的光芒却黯淡了下来。他意识到,这种方法虽然可行,但效率低下,尤其是当n较大时,灵力消耗巨大。

C++语法点

在C++中,素数筛选涉及到位运算和向量操作。以下是一些重要特性:

  • 平方根计算
    • 使用sqrt()函数计算平方根。
  • 向量操作
    • 使用vector类型存储素数。
    • 使用push_back()方法添加元素到向量。

高阶优化:埃拉托斯特尼筛法的智慧

哪吒元神中突然浮现金色铭文——「混元无极算素数,埃拉托斯特尼筛法显真身」。他意识到,可以通过埃拉托斯特尼筛法优化素数的筛选过程。

哪吒决定使用埃拉托斯特尼筛法,通过标记非素数来快速筛选出素数。通过这种方式,他成功地生成了素数序列,而且灵力消耗大幅减少。

#include <vector>

相关文章:

  • 阿里云服务器环境部署 一
  • 【从0到1搞懂大模型】RNN基础(4)
  • 路由的原理
  • pytorch小记(九):pytorch中创建指定形状的张量: torch.empty
  • python中a is None 和 a==None有区别吗
  • 簡易傢俬購物Apps
  • 设计模式(行为型)-观察者模式
  • Linux内核传输层源码分析SCTP
  • IP关联的定义和避免方法
  • 高可用环境下Nginx服务管理脚本优化实践
  • 应用商店上新:Couchbase Enterprise Server集群
  • 【RHCE实验】搭建主从DNS、WEB等服务器
  • Spring Boot整合JWT 实现双Token机制
  • Oracle GoldenGate 全面解析
  • Description of a Poisson Imagery Super Resolution Algorithm 论文阅读
  • 管家婆实用贴-如何设置打印机共享
  • Vue.js 与 RESTful API 集成之处理 GET、POST 请求
  • Flutter_学习记录_状态管理之GetX
  • Spring Security 教程:从入门到精通(含 OAuth2 接入)
  • 利用JavaScript在网页中获取当前的时间并展现在网页上
  • 为小龙虾洗清这些“黑锅”,这份科学吃虾指南请收好
  • 丹泽尔·华盛顿惊喜收获戛纳终身成就奖
  • “集团结婚”:近百年前革新婚俗的尝试
  • 财政部:鼓励政策性银行对符合条件的城市更新项目提供支持
  • 这个东西每道菜里都有,却可能让你得一身病,做好这些能避免
  • 花旗回应减员传闻:持续评估人力资源战略,将为受影响的个人提供支持