蓝桥杯冲击01 - 质数篇

2023-11-16

目录

前言

一、质数是什么

二、易错点

三、试除法判断是否为质数

四、质数常考三大模型

五、真题练手


前言

距离蓝桥杯还有一个月,高效复习蓝桥杯知识,

质数相关的题目在蓝桥杯中经常出现。例如,2016年蓝桥杯省赛初赛第四题就是要求判断一个数是否为质数。此外,还有许多与素数相关的题目,如求一定范围内素数数量、素数和等等。因此,掌握质数的判断、筛法、求和等基本算法是参加蓝桥杯的必备技能之一。


提示:以下是本篇文章正文内容,下面案例可供参考

一、质数是什么

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。


二、易错点

1、考试中最常考到的模型是也就是最简单的模型,判断一下什么是质数,大部分使用暴力枚举直接从2开始到这个数判断,但是往往这样面对数据比较大的时候容易出现超时,可以使用sqrt(n),但是每次枚举都要调用一下,最好的方法是

for(int i = 2;i <= n / i;i ++)

 2、其次还有一点1和2都不是质数,这俩个数要进行特判一下,防止出错误。


三、试除法判断是否为质数

以下代码常用来判断是否为质数


bool is_prime(int x)
{
    if(x < 2 ) return false;
    for(int i = 2;i <= x / i;i ++)
    {
        if(x%i == 0)
            return false;
    }
    return true;
}

四、质数常考三大模型

1、判断是否为质数

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

bool is_prime(int x)
{
    if(x < 2 ) return false;
    for(int i = 2;i <= x / i;i ++)
    {
        if(x%i == 0)
            return false;
    }
    return true;
}
int main()
{
    int n;
    cin >>n;
    while(n--)
    {
        int x;
        cin >> x;
        if(pd(x)) cout << "Yes" <<endl;
        else cout <<"No" <<endl;
        
    }
}

2、分解质因数

 解

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
void divide(int n)
{
    for(int i = 2;i <= n/i;i ++)
    {
        if(n % i == 0)
        {
            int s = 0;
            while(n % i == 0)
            {
                n /= i;
                s ++;
            }
            cout << i << " " << s <<endl;
        }
    }
    if(n > 1) cout << n << " " << "1" <<endl;
    puts("");
}
int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        int x;
        cin >> x;
        divide(x);
    }
    return 0;
    
}

3、筛选质数

 解

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1000010;
int prime[N],cnt;
bool st[N];
void get_primes(int x)
{
    for(int i = 2;i <= x;i++)
    {
        if(!st[i])
        {
            prime[cnt] = i;
            cnt ++;
        }
       for(int j = i;j <= x;j += i) st[j] = true; // 所有有整除关系的都筛掉
    }
    
}
int main()
{
    int n;
    cin >> n;
    get_primes(n);
    cout << cnt << endl;
    return 0;
}

五、真题练手

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

我们知道第一个质数是 22、第二个质数是 33、第三个质数是 55……

请你计算第 20192019 个质数是多少?

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

#include <iostream>
using namespace std;
bool divide(int x)
{
  if(x < 2) return false;
  for(int i = 2;i <= x / i;i ++)
  {
     if(x % i == 0) return false;
  }
  return true;
}
int res;
int main()
{
  int i;
  for(i = 1;;i ++)
  {
    
    if(divide(i))
    {
       res ++;
    }
    if(res == 2019) break;
  }
  cout << i ;
  return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯冲击01 - 质数篇 的相关文章

随机推荐

  • 0.43 版本frp 穿透后 404,内网访问正常

    解决办法 把 frps ini 中 common 块中加的 vhost http port 6001 删除就好 nginx 配置 6001 端口 然后 frpc ini 配置如下 web type http local ip 127 0 0
  • ConcurrentHashMap原理,jdk7和jdk8版本的区别

    jdk7 分段锁 数据结构 ReentrantLock Segment HashEntry 一个Segment中包含一个HashEntry数组 每个 HashEntry又是一个链表结构 元素查询 二次hash 第一次Hash定位到Segme
  • 记录一次优化运行时间的经验,QTableWidget竟有这么大的坑

    前两天接到一个任务 一个VS2015 qt5 osgEarth实现的项目 在向osgEarth场景中添加卫星时 用时过长 首先看一下代码逻辑 点击 添加 按钮并选择要添加的卫星后 我选择了七百多颗卫星 先将卫星相关参数添加到QTableWi
  • JS document.write()换行

    一开始想到的是用 n 未能达到换行效果 通过多个参数实现换行效果 通过传递多个参数 即可实现换行效果 document write br ar 效果 示例源码
  • Qt实战 信号槽有哪些连接方式?

    相信大多数面试过Qt的同学都会被问的问题 是的 因为在Qt的世界中 这简直太太太基础啦 而你只知道Qt AutoConnection 从未关心过其他连接方式 如果被我说中了 那就耐心看完吧 Qt AutoConnection 自动连接 这是
  • 七大排序算法

    目录 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 快速排序优化 非递归实现快速排序 归并排序 非递归的归并排序 排序 所谓排序 就是使一串记录 按照其中的某个或某些关键字的大小 递增或递减的排列起来的操作 常见的排序算
  • redis基础4——RDB持久化、AOF持久化全面深入解读

    文章目录 一 redis持久化机制 1 1 持久化的背景 1 2 两种持久化概念 1 2 1 快照方式 RDB 1 2 2 文件追加方式 AOF 1 3 rdb持久化 Redis Database 1 3 1 快照原理 1 3 2 触发机制
  • 组合聚合的概念

    聚合的概念 聚合 Aggregation 关系是关联关系的一种 是强的关联关系 聚合是整体和个体之间的关系 例如 汽车类与引擎类 轮胎类 以及其它的零件类之间的关系便整体和个体的关系 聚合关系也是通过实例变量实现的 在聚合关系中 两个类是处
  • shell脚本中遇到错误时中断程序运行,不再执行后面的程序

    shell脚本中遇到错误时中断程序运行 不再执行后面的程序 当你在脚本中写了一连串的代码时 如果后面的代码需要前面代码执行正确才能继续执行时 你可以使用set e vim test sh新建一个脚本文件 bin bash 设置程序出错时不再
  • 【软件工程】静态测试与动态测试

    静态测试 桌前检查 代码走查 代码审查 动态测试 黑盒测试 等价类划分 确定无效与有效等价类 设计用例尽可能多的覆盖有效类 设计用例只覆盖一个无效类 边界值分析 处理边界情况时最容易出错 选取的测试数据应该恰等于 稍小于或稍大于边界值 错误
  • python爬虫返回百度安全验证

    我一开始用的是requests库 header加了accept和user agent 这是一开始的代码 import requests headers Accept text html application xhtml xml appli
  • SpringBoot项目使用EasyPoi实现导入导出,就是这么的丝滑

    在项目的开发工程中 经常有导入导出数据的常见功能场景 Apache的POI是处理导入导出中最常用的 但是其原生的用法太复杂 很繁琐 总是在Copy 无意间发现一款简单粗暴的神器EasyPoi EasyPoi也是基于POI的 在SpringB
  • 使用vpd进行行级控制

    在系统用户下 1 创建vpd用户 create user vpd identified by 123456 grant resource connect to vpd grant execute on dbms rls to vpd gra
  • 高德地图, 动态绘制多个marker 并 随着地图缩放, 判定marker之间的距离, 显示不同 marker 效果

    转载
  • JVM系统线程

    虚拟机线程 这种线程的操作时需要JVM达到安全点才会出现 这些操作必须在不同的线程中发生的原因是他们都需要JVM达到安全点 这样堆才不会变化 这种线程的执行类型包括 stop the world 的垃圾收集 线程栈收集 线程挂起以及偏向撤销
  • MFC Windows程序设计1_3

    使用VS2008生成MFC程序 选择对话框形式 主要的需要注意的 在App类中 重写InitInstance 函数 MyDlg dlg m pWindow dlg dlg doModal return FALSE 注意InitInstanc
  • 读书有感:《失业的程序员》

    失业的程序员 是我在三天前心血来潮找来的一本书 这是一本极其易读 风趣横生的关于程序员从失业到创业的小说类书籍 书中主人公从一开始辞职失业 到整合资源开始创业 再到最后看似创业已经稳定却是艰难险阻 创业团队也从一开始的 2 人 到 10 多
  • HTML5(十一)——WebSocket 基础教程

    一 为什么要学 WebSocket websocket 是 HTML5 提供的一种长链接双向通讯协议 使得客户端和服务器之间的数据交换更简单 允许服务端主动向客户端推送数据 并且客户端与服务端只需连接一次 就可以保持长久连接 并进行数据通信
  • Unity 委托 (Delegate) 的简单理解以及实现

    委托相当于把某一个方法当成参数 当执行委托的时候就相当于执行了方法 所以这个方法必须和委托具有相同的参数类型 委托的简单实现 using UnityEngine 委托 代理 是存有对某个方法的引用的一种引用类型变量 委托语法 delegat
  • 蓝桥杯冲击01 - 质数篇

    目录 前言 一 质数是什么 二 易错点 三 试除法判断是否为质数 四 质数常考三大模型 五 真题练手 前言 距离蓝桥杯还有一个月 高效复习蓝桥杯知识 质数相关的题目在蓝桥杯中经常出现 例如 2016年蓝桥杯省赛初赛第四题就是要求判断一个数是