约数,gcd,exgcd.
很多题都是要求出什么最大公约数或者最小公倍数什么的,也有一些题目是和约数个数有关的,所以需要总结一下。
首先最大公约数和最小公倍数怎么求呢?
当然是观察法了,对于一些很聪明的孩纸他们一般随便一看就秒出答案,当然更聪明的孩纸知道最小公倍数并不容易求出。
所以需要先看出最大公约数,然后两数乘积/他们的最大公约数就是最小公倍数了。
我?我当然是上述方法求了。那样很快的。当然对于一些比较复杂的就要采取一些方法了。
如短除法,这样的方法实现很快的。

当求最大公约数的时候把列出的一个集合中的数字公共的约数全部除掉,最后左边一列数字的乘积即为答案,如图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.的更多相关文章
- Gcd&Exgcd算法学习小记
Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...
- gcd&&exgcd&&斐蜀定理
gcd就是求a和b最大公约数,一般方法就是递推.不多说,上代码. 一.迭代法 int gcd(int m, int n) { ) { int c = n % m; n = m; m = c; } re ...
- 读入 并查集 gcd/exgcd 高精度 快速幂
ios_base::sync_with_stdio(); cin.tie(); ], nxt[MAXM << ], Head[MAXN], ed = ; inline void added ...
- 【数论】如何证明gcd/exgcd
我恨数论 因为打这篇的时候以为a|b是a是b的倍数,但是懒得改了,索性定义 a|b 为 a是b的倍数 咳咳,那么进入正题,如何证明gcd,也就是 gcd(a,b) = gcd(b,a%b)? 首先,设 ...
- gcd && exgcd算法
目录 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 2.扩展欧几里德算法 欧几里德算法与扩展欧几里德算法 1.欧几里德算法 #include<bits/stdc++.h> using ...
- Gcd&Exgcd
欧几里得算法: \[gcd(a,b)=gcd(b,a\bmod b)\] 证明: 显然(大雾) 扩展欧几里得及证明: 为解决一个形如 \[ax+by=c\] 的方程. 根据裴蜀定理,当且仅当 \[gc ...
- ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))
gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm ( gcd就是gcd(a, b), ( •̀∀•́ ) ...
- gcd, exgcd的证明
- 数论入门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 ...
随机推荐
- 为什么要用 Node.js
每日一篇优秀博文 2017年10月10日 周二 为什么要用 Node.js 这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上 ...
- linux每日命令(4):pwd命令
Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文 ...
- vue cli 项目的提交
前提: 配置git.以及git的ssh key信息 假设已经都安装好了,此处我用vue项目为例,因为vue-cli已经默认为我生成了ignore文件 在项目目录 初始化本地仓库,会创建一个.git目录 ...
- 20款最好的jQuery文件上传插件
当它是关于开发网络应用程序和网页的时候,文件上传功能的重要性是不容忽视的.一个文件上传功能可以让你上传所有类型的文件在网站上,包括视频,图像,文件和更多.创建一个文件上传功能,对你的网站是不是很难,有 ...
- Android Launcher分析和修改2——Icon修改、界面布局调整、壁纸设置
上一篇文章说了如何修改Android自带Launcher2的默认界面设置(http://www.cnblogs.com/mythou/p/3153880.html). 今天主要是说说Launcher里 ...
- 十分钟学会Charles抓包(iOS的http/https请求)
### 原文地址,感谢作者 : http://www.jianshu.com/p/5539599c7a25 Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Ch ...
- Pwnium CTF2014 – MatterOfCombination writeup
这道题是虽然只有75分,但是做出来的队伍却很少,我们队伍也没有做出来,这次是看到了0xAWES0ME 的解题思路后才有了这篇文章.原文地址可以点击看这里,英文的. 题目就是一张图片: 在网上可以找到这 ...
- Swift 中函数使用指南
关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才 ...
- 深度解析Java 8:JDK1.8 AbstractQueuedSynchronizer的实现分析
深度解析Java 8:JDK1.8 AbstractQueuedSynchronizer的实现分析(上) 深度解析Java 8:AbstractQueuedSynchronizer的实现分析(下) A ...
- Linux部署Web应用程序超链接下载中文名称文件404问题解决办法
Web应用程序目录下有帮助文档,是中文名称的Word文件 超链接内容如下: <a href="jsp/plugin/用户手册.doc">用户手册</a> 开 ...