博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
辗转相除法求最大公约数
阅读量:4356 次
发布时间:2019-06-07

本文共 681 字,大约阅读时间需要 2 分钟。

辗转相除法,其基本原理如下:

要求两个正整数a和b(假设a大于b)的最大公约数,可以将a表示成下面的式子

a = q*b + r                                     (1)

其中,q表示a除以b所得的商,r表示余数。

则有 r = a – q*b                               (2)

假设k为a,b的公因子,不妨设a=m*k,b=n*k;则(2)式可表示成

r = mk – q*n*k = (m – q*n)*k           (3)

由(3)式可以看出,k也是r的因子。

得出结论:如果一个数能够同时整除a和b,则必能同时整除b和r;反过来,一个数如果能同时整除b和r,也必能同时整除a和b。即a和b的公约数与b和r的公约数是相同的,其最大公约数也是相同。

即gcd(a,b) = gcd(b,r);

C语言的实现为:

/*辗转相除法求m,n(m > n)的最大公约数*/int gcd(int m,int n){    if(n == 0)        return m;    return gcd(n,m % n);}

 
 
 
 
 
 
/*辗转相除法求m,n(m > n)的最大公约数*/int gcd(int m,int n){    if(n == 0)        return m;    return gcd(n,m % n);}
另外,求出两个数的最大公约数之后,最小公倍数就可以求出:

最小公倍数 = 两个数的乘积/两个数的最大公约数,即

最小公倍数 = m*n / gcd(m,n);

转载于:https://www.cnblogs.com/maliyahooo/archive/2012/03/28/2421640.html

你可能感兴趣的文章
XMAL 中x名称控件的Auttribute
查看>>
java笔记11-内部类
查看>>
给年轻程序员的几句话
查看>>
ionic如何uglify和minify你的js,css,image,png....
查看>>
[LeetCode]Minimum Depth of Binary Tree
查看>>
jboss初体验
查看>>
Python列表、元组练习
查看>>
angular页面刷新
查看>>
Leetcode:7- Reverse Integer
查看>>
C6表单(方成eform)---自定义流程标题格式
查看>>
GridView下DropDownList 的选择方法onselectedindexchanged 实现方法
查看>>
Python之set集合
查看>>
Generic Repository Pattern - Entity Framework, ASP.NET MVC and Unit Testing Triangle
查看>>
Win7 下新版本Windows Virtual PC 安装SharePoint步骤详解
查看>>
SQLSERVER 升级版本的方法
查看>>
正则表达式基本语法详解
查看>>
BZOJ2132: 圈地计划
查看>>
PHP数据库连接mysql与mysqli的区别与用法
查看>>
char * 与char []探究理解
查看>>
QT窗体显示在屏幕中间位置
查看>>