很多题都是要求出什么最大公约数或者最小公倍数什么的,也有一些题目是和约数个数有关的,所以需要总结一下。

首先最大公约数和最小公倍数怎么求呢?

当然是观察法了,对于一些很聪明的孩纸他们一般随便一看就秒出答案,当然更聪明的孩纸知道最小公倍数并不容易求出。

所以需要先看出最大公约数,然后两数乘积/他们的最大公约数就是最小公倍数了。

我?我当然是上述方法求了。那样很快的。当然对于一些比较复杂的就要采取一些方法了。

如短除法,这样的方法实现很快的。

当求最大公约数的时候把列出的一个集合中的数字公共的约数全部除掉,最后左边一列数字的乘积即为答案,如图1。

很显然吧因为最大公约数就是每个数字中都能整除的数字且最大,所以他们公共的约数之积就是最大的公约数。

当求最小公倍数的时候呢?把这个集合任意几个(有的时候可能是1个)数字的约数除下,最后一圈数字相乘即为答案。如图2.。

这里由于下面是最根本的数字要相乘很显然,由于是最小公倍数,所以这个数字满足可以整除任何数字所以呢,由于每次都把一堆数字的存在的倍数都找出来,那么,这些数字相乘即为总体的倍数。原理其实就是把所有数字重复出现的质因数去掉,所有数字乘起来那这一定是最小公倍数了。说是显然其实也不过分。

这样就解决了求出最大公约数和最小公倍数的问题了。当然这个是针对多个数字求最大公约数和最小公倍数的了。

如果对于两个数字求最大公约数呢,换个名字gcd.那么就直接gcd了。

gcd(a,b)=gcd(b,a%b);(a>=b)

证明:设a=mc,b=nc;r=mc-knc=(m-kn)*c 因为 c|r 断定m-kn与n互质,则gcd(b,r)=c == gcd(a,b);

断定的话利用反正法法证明:设m-kn=xd,n=yd m-kn与n不互质有约数d 那么此时 a=(xd+kyd)c。b=ydc;显然a,b最大公约数为dc 不为c与原命题不相符。

因此c是b和r的最大公约数。证毕。

那么只要这样递归下去不断取%一定有b=0且此时最大公约数还在为c。得到答案。

当做高精gcd时就需要更相减损法了,因为%的高精不好写。

更相减损法:gcd(2a,2b)=gcd(a,b);gcd(a,b)=gcd(a,a-b)=gcd(b,a-b);

如果两个都为偶数那么除以2,互质则相减。这样最后a==b的时候最大公约数=2的乘积*等数。

证明:显然。

仔细想一下对于任意a,b的最大公约数d 都有d|a d|b 所以 d|(a-b);

所以在有限的次数中一定能得到等数这时就求出了最大公约数了...

写到这里我的头也比较懵吧,证明都看懂了,可最后求出的最大公约数还是不太懂,这可能需要时间沉淀吧,反正记住就行了;

约数个数:

对于一个整数n我们总能将其表示成n=p1^a1+p2^a2+...+pn^an;其中p为质因数

那么这样就很显然了约数个数=(a1+1)(a2+1)*...(an+1);因为a^0也算所以要加1;注意严谨。

约数和:

n的约数和=(p1^0+p1^1+...+p1^a1)(p2^0+...p2^a2)...(pn^0+pn^1+...pn^an);

证明:网上似乎没有证明,问学长学长说显然,我仔细看了一下发现是比较显然的吧。

仔细想发现是对的,但不知道为什么,时间来沉淀吧。

约数,gcd,exgcd.的更多相关文章

  1. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  2. gcd&&exgcd&&斐蜀定理

    gcd就是求a和b最大公约数,一般方法就是递推.不多说,上代码. 一.迭代法 int gcd(int m, int n) { ) { int c = n % m; n = m; m = c; } re ...

  3. 读入 并查集 gcd/exgcd 高精度 快速幂

    ios_base::sync_with_stdio(); cin.tie(); ], nxt[MAXM << ], Head[MAXN], ed = ; inline void added ...

  4. 【数论】如何证明gcd/exgcd

    我恨数论 因为打这篇的时候以为a|b是a是b的倍数,但是懒得改了,索性定义 a|b 为 a是b的倍数 咳咳,那么进入正题,如何证明gcd,也就是 gcd(a,b) = gcd(b,a%b)? 首先,设 ...

  5. gcd && exgcd算法

    目录 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 2.扩展欧几里德算法 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 #include<bits/stdc++.h> using ...

  6. Gcd&Exgcd

    欧几里得算法: \[gcd(a,b)=gcd(b,a\bmod b)\] 证明: 显然(大雾) 扩展欧几里得及证明: 为解决一个形如 \[ax+by=c\] 的方程. 根据裴蜀定理,当且仅当 \[gc ...

  7. ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))

    gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm     ( gcd就是gcd(a, b), ( •̀∀•́ ) ...

  8. gcd, exgcd的证明

  9. 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

    数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p ...

随机推荐

  1. oracle 回收表空间的数据文件大小

    查看表空间的使用情况: " "used MB",b.bytes "free MB", ,) "percent_used" from ...

  2. STM32f103的数电采集电路的DMA设计和使用优化程序

    DMA,全称为:Direct Memory Access,即直接存储器访问.DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直 ...

  3. centos7安装elasticsearch-head

    elasticsearch-head安装前准备 1.操作系统64位CentOS Linux release 7.2.1511 (Core)2.git是必需的elasticsearch-head是一款开 ...

  4. 使用apktool.jar工具反编译和回编译Android APK 终端命令模式

    1.工具准备 工具可以网上搜索下载新版本,也可以从这里Download:https://github.com/FlymeOS/tools/blob/lollipop-5.1/reverses/apkt ...

  5. winform 操作注册表提示没有权限解决办法

    1.打开VS2005.VS2008.VS2010.VS2012.VS2013.VS2015工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式 ...

  6. idea java 非web程序打包

    以下打包非常暴力.O(∩_∩)O哈哈~ 方法一: 第一步:选择需要打包的程序 第二步:选择需要打包的文件 第三步:artifacts->jar->from modules with... ...

  7. Java8学习笔记(六)--Optional

    前言 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的 ...

  8. CentOS7 yum方式安装MariaDB 10.2.13-1

    注:以下步骤都是以root身份运行. 一.建立mariadb.repo 1,编辑新文件,命令:vim  /etc/yum.repos.d/mariadb.repo 2,输入如下内容,保存退出 [mar ...

  9. windows cmd命令显示UTF8设置

    windows cmd命令显示UTF8设置   在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...

  10. JSON的多种转换

    String message = httpSend(url, empName, loginPassWd); // 解析json字符串 message = message.replaceAll(&quo ...