数学知识第一期 质数

前言

本文是关于质数的一些内容,希望能够对大家有帮助!!!

一、质数的基本内容

定义:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn。如果 为素数,则 要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。如果N+1为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。

模板:

试除法判定质数 —— 模板:

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

试除法分解质因数 —— 模板:

void divide(int x)
{for (int i = 2; i <= x / i; i ++ )if (x % i == 0){int s = 0;while (x % i == 0) x /= i, s ++ ;cout << i << ' ' << s << endl;}if (x > 1) cout << x << ' ' << 1 << endl;cout << endl;
}

朴素筛法求素数 —— 模板:

int primes[N], cnt;     // primes[]存储所有素数
bool st[N];         // st[x]存储x是否被筛掉void get_primes(int n)
{for (int i = 2; i <= n; i ++ ){if (st[i]) continue;primes[cnt ++ ] = i;for (int j = i + i; j <= n; j += i)st[j] = true;}
}

线性筛法求素数 —— 模板:

int primes[N], cnt;     // primes[]存储所有素数
bool st[N];         // st[x]存储x是否被筛掉void get_primes(int n)
{for (int i = 2; i <= n; i ++ ){if (!st[i]) primes[cnt ++ ] = i;for (int j = 0; primes[j] <= n / i; j ++ ){st[primes[j] * i] = true;if (i % primes[j] == 0) break;}}
}

二、例题

1.试除法判定质数

AC代码:

#include <bits/stdc++.h>
using namespace std;bool check(int n)
{if (n < 2)  return false;for (int i = 2; i <= n / i; i ++ )if (n % i == 0)return false;return true;
}int main()
{int m;scanf("%d", &m);while (m -- ){int x;scanf("%d", &x);puts(check(x) ? "Yes" : "No");}return 0;
}

2.分解质因数


AC代码:

#include <bits/stdc++.h>
using namespace std;void solve(int n)
{for (int i = 2; i <= n / i; i ++ ){if (n % i == 0){int s = 0;while (n % i == 0){n /= i;s ++ ;}printf("%d %d\n", i, s);}}if (n > 1)  printf("%d 1\n", n);puts("");
}int main()
{int m;scanf("%d", &m);while (m -- ){int x;scanf("%d", &x);solve(x);}return 0;
}

3、筛质数

AC代码1:

// 埃式筛
// 写法1
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int primes[N], cnt, n;
bool st[N];void solve()
{for (int i = 2; i <= n; i ++ ){if (!st[i]){primes[cnt ++ ] = i;for (int j = 2 * i; j <= n; j += i)st[j] = true;}}
}int main()
{scanf("%d", &n);solve();printf("%d\n", cnt);return 0;
}// 写法2
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int primes[N], cnt, n;
bool st[N];void solve()
{for (int i = 2; i <= n; i ++ ){if (!st[i]){primes[cnt ++ ] = i;for (int j = i; j <= n / i; j ++ )st[i * j] = true;}}
}int main()
{scanf("%d", &n);solve();printf("%d\n", cnt);return 0;
}

AC代码2:

// 线性筛
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int primes[N], cnt, n;
bool st[N];void solve()
{for (int i = 2; i <= n; i ++ ){if (!st[i]) primes[cnt ++ ] = i;for (int j = 0; j < cnt && primes[j] <= n / i; j ++ ){st[i * primes[j]] = true;if (i % primes[j] == 0) break;}}
}int main()
{scanf("%d", &n);solve();printf("%d\n", cnt);return 0;
}

总结

第一节的基础内容一定要打好基础,不然后面的内容是难以理解的,感谢大家的观看!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot IP黑白名单的实现

业务场景 IP黑白名单是网络安全管理中常见的策略工具&#xff0c;用于控制网络访问权限&#xff0c;根据业务场景的不同&#xff0c;其应用范围广泛&#xff0c;以下是一些典型业务场景&#xff1a; 服务器安全防护&#xff1a; 黑名单&#xff1a;可以用来阻止已知的恶意IP地…

html:thymeleaf实现日期格式转换

thymeleaf内置对象有&#xff1a; #dates&#xff1a;日期格式化内置对象 #numbers:数字格式化 <td th:text"${#dates.format(man.assayTime,yyyy-MM-dd)}"></td>参考以下文章&#xff1a; https://blog.csdn.net/silence1120/article/details/1057904…

Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用

前言 Go语言凭借低占用&#xff0c;高并发等优秀特性成为后台编程语言的新星&#xff0c;GoZero框架由七牛云技术副总裁团队编写&#xff0c;目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求&#xff0c;后台api调用rpc服务的相…

VR数字展厅,平面静态跨越到3D立体化时代

近些年&#xff0c;VR的概念被越来越多的人提起&#xff0c;较为常见的形式就是VR数字展厅。VR数字展厅的出现&#xff0c;让各地以及各行业的展厅展馆的呈现和宣传都发生了很大的改变和革新&#xff0c;同时也意味着展览传播的方式不再局限于原来的图文、视频&#xff0c;而是…

js的一些运算符规则

?? 是根据 null 和 undefined 判断的&#xff0c; || 是根据 布尔值 false 判断的, 左侧为true 不看右侧 && 左侧为false 不看右侧 ?. ”可选链操作符“&#xff0c;允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。在引…

【Redis】list以及他的应用场景

介绍 &#xff1a;list 即是 链表。链表是一种非常常见的数据结构&#xff0c;特点是易于数据元素的插入和删除并且且可以灵活调整链表长度&#xff0c;但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList&#xff0c;但是 C 语言并没有实现…

Spring Boot如何统计一个Bean中方法的调用次数

目录 实现思路 前置条件 实现步骤 首先我们先自定义一个注解 接下来定义一个切面 需要统计方法上使用该注解 测试 实现思路 通过AOP即可实现&#xff0c;通过AOP对Bean进行代理&#xff0c;在每次执行方法前或者后进行几次计数统计。这个主要就是考虑好如何避免并发情况…

JavaScript Proxy 对象、eval函数详解

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ 目录 ✨ 前言 ✨ 正文 Proxy 什么是 Proxy 代理 handlers get 捕获器 se…

Oracle ORA-09925

Error : 30: Read-only file system 造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的&#xff0c;在系统重启之后&#xff0c;受损分区就会被Linux自动挂载为只读。 解决办法之一&#xff1a; 重启系统

聚观早报 | 特斯拉公布2023年财报;五菱红1号电池正式发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月26日消息 特斯拉公布2023年财报 五菱红1号电池正式发布 Redmi Note 13 Pro新春版开售 三星Galaxy S24系列发布…

live555搭建流式rtsp服务器

源代码已上传gitee 一、需求 live555源代码中的liveMediaServer是将本地文件作为源文件搭建rtsp服务器&#xff0c;我想用live555封装一个第三方库&#xff0c;接收流数据搭建Rtsp服务器&#xff1b;预想接口如下&#xff1a; class LiveRtspServer { public:/***brief构造一…

HCIA——29HTTP、万维网、HTML、PPP、ICMP;万维网的工作过程;HTTP 的特点HTTP 的报文结构的选择、解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

在windows上用python版tensorrt推理

文章目录 尝试一&#xff1a;利用torch导出的pth文件&#xff0c;调用torch2trt来进行trt推理1.1 搭建环境1.2 如何trt推理1.3 遇到的问题 尝试二&#xff1a;把onnx模型转为sim版的onnx模型2.1 搭建onnxim环境2.2 使用 onnxsim 尝试三&#xff1a;把onnx-sim转到trt&#xff0…

Python之代码覆盖率框架coverage使用介绍

Python代码覆盖率工具coverage.py其实是一个第三方的包&#xff0c;同时支持Python2和Python3版本。 安装也非常简单&#xff0c;直接运行&#xff1a; pip install coverage 安装完成后&#xff0c;会在Python环境下的\Scripts下看到coverage.exe&#xff1b; 首先我们编写…

nginx技能点汇总

nginx技能点汇总 常用正则 . &#xff1a; 匹配除换行符以外的任意字符 ? &#xff1a; 重复0次或1次&#xff1a; 重复1次或更多次 * &#xff1a; 重复0次或更多次 \d &#xff1a;匹配数字 ^ &#xff1a; 匹配字符串的开始 $ &#xff1a; 匹配字符串的结束 {n} &#x…

【LIBS】交叉编译TCPDUMP

目录 1. 安装编译工具2. 设置环境变量3. 编译libpcap3.1 安装依赖3.2 交叉编译 4. 编译TCPDUMP4.1 克隆仓库与生成构建环境4.2 静态链接LIBPCAP4.3 动态链接LIBPCAP4.4 构建与安装 5. 查看交叉编译结果5.1 文件布局 1. 安装编译工具 sudo apt-get install -y autoconf automak…

TestNG注释- @BeforeMethod

在这篇文章中&#xff0c;我们将学习TestNG中的BeforeMethod注释。BeforeMethod注释方法将在类中的每个测试用例或方法之前执行&#xff0c;但在BeforeClass注释方法之后执行。因此&#xff0c;这意味着BeforeMethod注释将运行与特定类中的测试用例一样多的次数。 那么&#x…

架构篇25:高可用存储架构-双机架构

文章目录 主备复制主从复制双机切换主主复制小结存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考…

【linux-interconnect】What NVIDIA MLNX_OFED is?

NVIDIA MLNX_OFED Documentation v23.07 - NVIDIA Docs 文章目录 What NVIDIA MLNX_OFED is&#xff1f;Overview[Software Download](https://docs.nvidia.com/networking/display/mlnxofedv23070512#src-2396583107_NVIDIAMLNX_OFEDDocumentationv23.07-SoftwareDownload) Wh…

爬取第一试卷网高三数学试卷并下载到本地

import requests import re import os filename 试卷\\ if not os.path.exists(filename):os.mkdir(filename) url https://www.shijuan1.com/a/sjsxg3/list_727_1.html headers {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.…