蓝桥杯数论总结:最大公约数和最小公倍数(原理+性质证明+python板子)

news2024/12/28 21:49:28

目录

最大公约数

手写GCD

最小公倍数

推导LCM函数表达式

GCD基本性质

性质的证明

取模运算基本性质

证明


最大公约数

gcd是最大公约数的意思。Python的math库里有gcd函数。

在Python命令行运行gcd,可发现其可传入0、不会返回负数、可对多个数进行判断的性质。

from math import *
gcd(0,44)
44
gcd(0,0)
0
gcd(-6,-15)
3
gcd(-17,289)
17
gcd(17,-289)
17
gcd(48,96,120,688)
8

手写GCD

辗转相除法

容易证明,gcd(a,b)=gcd(b,a \; mod \; b)

于是可写如下代码:

def gcd(a,b):
    if b==0:return a
    else: return gcd(b,a%b)

由于在Python中,a%b当b为负数的时候结果为负数,所以此手写算法有可能返回负数。

最小公倍数

lcm是最小公倍数的意思。在Python里有lcm函数,但是蓝桥杯用的环境是Python3.8.6的,所以只能借助gcd函数写lcm函数了。代码如下:

from math import *
def lcm(a,b):
    return a//gcd(a,b)*b

借用表达式lcm(a,b)=a*b/gcd(a,b)

推导LCM函数表达式

算数基本定理:任何一个大于1的正整数n,都可以唯一分解成有限个素数的乘积。

则有n=p_{1}^{c_{1}}*p_{2}^{c_{2}}*...*p_{m}^{c_{m}}

c_{i}是非负整数,p_{i}是互不相同的素数,且随i增大,p_{i}数值不减。 

a=p_{1}^{c_{1}}*p_{2}^{c_{2}}*...*p_{m}^{c_{m}}b=p_{1}^{f_{1}}*p_{2}^{f_{2}}*...*p_{m}^{f_{m}}

则有

gcd(a,b)=p_{1}^{\min(c_{1},f_{1})}*=p_{2}^{\min(c_{2},f_{2})}*...*p_{m}^{\min(c_{m},f_{m})}

lcm(a,b)=p_{1}^{\max(c_{1},f_{1})}*=p_{2}^{\max(c_{2},f_{2})}*...*p_{m}^{\max(c_{m},f_{m})}

所以

gcd(a,b)*lcm(a,b)=a*b

则有

lcm(a,b)=a*b/gcd(a,b)

GCD基本性质

(1) gcd(a, b) = gcd(a, a+b) = gcd(a, k*a+b)

(2) gcd(k*a, k*b) = k*gcd(a, b)

(3)定义多个整数的最大公约数: gcd(a, b,c)= gcd(gcd(a, b),c)

(4)若gcd(a,b)= d,则gcd(a/d,b/d)= 1,即a/db/d互素。

(5) gcd(a+c*b,b)= gcd(a, b)

性质的证明

取模运算基本性质

请看此篇文章的前五条性质。

最大公约数 —— Greatest Common Divisor(GCD) - 知乎 (zhihu.com)

证明

(1)

(2)

(3)使用算数基本定理证明,不再赘述。

(4)

(5)和第一条等价。

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

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

相关文章

利用 DynamoDB 和 S3 结合 gzip 压缩,最大化存储玩家数据

前言 一些传统游戏架构中,采用 MySQL 存储玩家存档数据,利用分库分表分散单库单表的存储和性能压力,从而达到支持更多玩家的目的。随着数据量增长,数据表中 varchar 类型已经无法满足游戏中单字段的存储需求,而 blob …

数据结构 -最短路径dijkstra(迪杰斯特拉)算法讲解及代码实现

迪杰斯特拉算法是一种广义的贪心算法,求出局部最优解,再去求全局最优解 图文讲解: 举例图:(起始点为1) 辅助数组: s:记录了目标顶点到其他顶点的最短路径是否求得(求得…

代码调试技巧

目录 1.为什么要进行调试? 2.调试的基本步骤 3.关于Debug版本和Release版本 4.调试技巧 5.调试总结 我还是喜欢真实的世界,因为在那里,我可以通过自己的努力来改变残酷的现实 本专栏适用于有一定C语言基础并且还要继续学习的人 往期…

CryoEM - 冷冻电镜 CryoSPARC 软件的安装与环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130809095 CryoSPARC 软件是一种用于冷冻电镜数据处理的创新工具,可以快速、准确地重建生物分子的三维结构。CryoSPARC 软件…

【使用ChatGPT制作PPT】

内容目录 一、利用ChatGPT生成PPT内容1. 打开ChatGPT:2. 输入需求:3. 复制: 二、制作生成PPT1. 打开PPT制作网站:2. 左侧网页版-导入创建-粘贴Markdown内容-导入创建3. 自行更改副标题、演讲者、选择模板、演示及下载 一、利用Cha…

Linux网络——shell编程之iptables防火墙

Linux网络——shell编程之iptables防火墙 一、概述1.iptables2.netfilter 和 iptables的关系 二、iptables中的四表五链1.四表五链的关系2.四表3.五链 三、匹配顺序1.数据包到达防火墙的匹配流程2.规则链之间的匹配顺序3.规则链内的匹配顺序 四、iptables 防火墙的配置方法1.ip…

python tesseract-ocr + jTessBoxEditorFX 训练自定义字库

在使用tesseract-ocr进行字符识别时,我们使用了官方提供的字库,例如英文字库、中文字库,但这些字库并不一定能满足我们所有的需求。所以有些时候,我们就需要训练属于自己的自定义字库。废话少说,直接开干。 第一步&am…

联想首次展示全栈算力方案服务,品牌换新亮相

1、联想算力,第一次真正被所有人感知。 2、基于软硬服一体化的优势,联想打造了丰富多样的四维算力服务,即融合化、场景化、订阅化、绿色化,可以满足不同企业、不同行业的定制化需求。 5月20日,主题为“联想方案服务&am…

2023中兴软件类笔试

1.下列Python代码:将近似输出什么? import numpy as np print np.sqrt(6*np.sum(1/np.arange(1,1000000, dtypenp.float)**2))这段代码是用来计算圆周率的巴塞尔问题(Basel problem)的近似值,输出结果将近似为3.14159…

使用SMTP协议发送邮件

剧情介绍 今天心血来潮,学了一下Python3,里面有个章节是发送邮件,用示例里面的代码,运行后报错,然后记录一下问题是如何解决的,大家可以看一下,可以有效避坑。 SMTP协议介绍 SMTP&#xff08…

Mysql数据库备份 一天一次 保存最新五天 每天凌晨三点备份

Mysql数据库备份 一天一次 保存最新五天 每天凌晨一点三十备份 步骤一 先查看 sudo systemctl status crond 是否存在 不存在执行下面代码 sudo yum install cronie sudo systemctl start crond sudo systemctl enable crond sudo systemctl status crond 步骤二 Cd /home …

从零开始 Spring Boot 33:Null-safety

从零开始 Spring Boot 33:Null-safety 图源:简书 (jianshu.com) Null-safety(null安全)实际上是Java这个“古老”语言的历史包袱,很多新的语言(比如go或kotlin)在诞生起就在语言层面提供对null…

软件测试需要学习什么?好学吗?需要学多久?到底是报班好还是自学好?

目录 前言: 【文章的末尾给大家留下了大量的福利哦。】 一:软件测试好学吗?需要学习多久? 二:那么选择软件测试行业有什么优势呢? 三:再来说说大家最关心的——软件测试人员的薪资怎么样? …

Spring : XML配置 JavaBean

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走!!!! https://github.com/DerekYRC/mini-spring 提示:以下是本篇文章正文内容,下面案例可供参考 一、xml 加载 Bean 对象 大家先…

【C语言】数组名作函数参数

数组名作函数参数 引例思考例2通用性指针形参和数组形参几点说明 引例 在主函数中输入10个整数,并存入一个一维数组中;然后在被调函数中,将0号元素的值改为原值的10倍;最后在主函数中输出结果。 思路: 若想在被调函数…

10:00进去,10:05就出来了,这问的也太变态了···

从外包出来,没想到死在另一家厂子了。 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到5月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推…

SSM框架-SpringMVC

1. SpringMVC 1.1 Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &…

ActiveMq消息队列

ActiveMq是一种开源的java程序&#xff0c;支持Java消息服务(JMS) 1.1 版本 一、持久化机制 1、KahaDB&#xff1a;5.4及之后版本&#xff0c;默认使用日志文件 activemq.xml默认使用KahaDB持久化存储&#xff0c;默认配置安装路径data目录下 <persistenceAdapter> …

Django框架之模板其他补充

本篇文章是对django框架模板内容的一些补充。包含注释、html转义和csrf内容。 目录 注释 单行注释 多行注释 HTML转义 Escape Safe Autoescape CSRF 防止csrf方式 表单中使用 ajax请求添加 注释 单行注释 语法&#xff1a;{# 注释内容 #} 示例&#xff1a; {# 注…

09 FPGA—利用状态机实现可乐售卖机(附代码)

1. 理论 FPGA 是并行执行的&#xff0c;如果我们想要处理具有前后顺序的事件&#xff0c;就需要引入状态机。举个例子&#xff0c;将人看成 FPGA ,我们可以在散步的时候听歌和聊天这是并行执行的&#xff0c;但一天的行程安排却是以时间段前后执行的。 状态机简写为 FSM&#…