最大公因数数gcd模板
首先蒟蒻是在大佬的博客里学习的代码,代码风格多有相似之处,大佬博客https://www.cnblogs.com/lMonster81/p/10433902.html
最大公因数那,顾名思义就是两个数共有的因数里最大的那个,辗转相除求最大公因数所用的原理就是两个数的最大公因数等于这两个数中【较小的那个数】和【两数之差】的最大公因数,证明如下:
描述:关于辗转相除法的具体实现在这里就不具体说明了,本文要记录的是辗转相除法应用于求最大公约数的算法证明过程。 假设: 求m和n的最大公约数。
a,b分别是m除以n的商和余数,即m=na+b。
gcd(m,n)表示m和n的最大公约数。
求证:gcd(m,n)=gcd(n,b) 证明: 设c=gcd(m,n), d=gcd(n,b) 1. ∵c为m和n的公约数 ∴m能被c整除,n也能被c整除 ∴na也能被c整除 参照推论一 ∴m-na也能被c整除(即b能c整除) 参照推论二 ∴c为n和b的公约数 ∵d为n和b的最大公约数 ∴c≤d 2. 同理可证 d≤c ∵d为n和b的公约数 ∴n能被d整除,b也能被d整除 ∴na也能被d整除 参照推论一 ∴na+b也能被d整除(即m能d整除) 参照推论二 ∴d为m和n的公约数 ∵c为m和n的最大公约数 ∴d≤c 综上所述:c=d,即gcd(m,n)=gcd(n,r) 推论一:若a能被b整除(a=tb),则如果k为正整数,则ka也能被b整除(ka=ktb)。 推论二:若a能被c整除,b也能被c整除,则(a±b)也能被c整除。
以上证明转载自:https://www.cnblogs.com/zwffff/archive/2010/08/25/1808178.html
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a,b;
int gcd(int x,int y)
{
int Max=max(x,y),Min=min(x,y);
return Max%Min==?Min:gcd(Max,Max%Min);
}
int main()
{
cin>>a>>b;
int c=gcd(a,b);
cout<<c;
return ;
}
关于最大公因数与最小公倍数的其他几个知识:
1,:最大公因数与最小公倍数的乘积等于原两个数的乘积。
最大公因数数gcd模板的更多相关文章
- gcd 模板
声明 给 x,y 两个数,求 x,y 的最大公因数. 辗转相除法,直接套!!! function gcd(x,y:longint):longint; begin then exit(x) else e ...
- SPOJ - DQUERY 主席树求区间有多少个不同的数(模板)
D-query Time Limit: 227MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submit Status ...
- HDU 1134 Game of Connections(卡特兰数+大数模板)
题目代号:HDU 1134 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1134 Game of Connections Time Limit: 20 ...
- [NOIP2019模拟赛]数数(gcd)
题目大意: 求l~r中有多少数与x互质,带单点修改 分析: 两个30的部分分很好打: ·n<=1000暴力O(nq)就好了 ·$a_i<=100$用树状数组维护每个x的前缀和就好了 100 ...
- xudyh的gcd模板
hdu 5019 #include <cstdlib> #include <cctype> #include <cstring> #include <cstd ...
- hdu3191+hdu1688(求最短路和次短路条数,模板)
hdu3191题意:求出次短路的长度和条数 #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- gcd模板(欧几里得与扩展欧几里得、拓展欧几里得求逆元)
gcd(欧几里得算法辗转相除法): gcd ( a , b )= d : 即 d = gcd ( a , b ) = gcd ( b , a mod b ):以此式进行递归即可. 之前一直愚蠢地以为辗 ...
- 最大公约数(gcd模板)
int gcd(int a,int b) { ) { int t=a%b; a=b; b=t; } return a; }
- caioj 1204 Catalan数(模板)
题目中对卡特兰数的总结很不错 以下copy自题目 Catalan数列:1,1,2,5,14,42,(前面几个要背) 即 h(0)=1,h(1)=1,h(2)=2,h(3)=5...公式:h(n)=C( ...
随机推荐
- 第四章 走进jVM
4.1字节码 java文件编译成字节码后由默认解释执行,热点代码编译执行.方法调用到一定程度的时候,进行JIT编译成机器码执行,后面直接运行JIT编译结果(机器码). 4.2类加载过程 加载链接初始化 ...
- IT路上可能遇到的小需求资源汇总
jar文件打包为window service tomcat打包为window service springboot的jar包打包为window service
- python 中 len()和range()
https://blog.csdn.net/qq_36357820/article/details/77850841
- 【leetcode】1019. Next Greater Node In Linked List
题目如下: We are given a linked list with head as the first node. Let's number the nodes in the list: n ...
- Git 中关于一次完整的提交的命令
1.创建仓库(git init .git clone URL) 有两种新建 Git 项目仓库的方法.第一种是在本地通过初始化来创建新的 Git 仓库.第二种是从已有的 Git 远程仓库中克隆出一个仓库 ...
- 数据挖掘:周期性分析SMCA算法
数据挖掘:周期性分析SMCA算法 原文地址:http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1423978 算法介绍 以时间顺序挖掘周期性的模式 ...
- k-近邻算法(kNN)测试算法:作为完整程序验证分类器
#测试算法:作为完整程序验证分类器 def datingClassTest(): hoRatio = 0.10 #设置测试集比重,前10%作为测试集,后90%作为训练集 datingDataMat,d ...
- dumpsys, traceView调试命令
1. dumpsys dumpsys cpuinfo: 打印cpu使用情况: dumpsys meminfo: 打印内存使用率情况: dumpsys activity: 打印所有活动的信息: dump ...
- JavaScript实现Word、Excel、PPT在线预览
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_27626333/article/d ...
- Win7系统取消登录界面的两种方法(图文)
windows7系统设置电脑密码后,即使取消密码,也会出现登录界面 ,每次都要点击用户图标才能进入系统,这样比较麻烦.那么有什么办法可以取消登录界面呢?方法当然是有的,阅读下文教程,我们一起来看下Wi ...