C语言进阶:[9]求最大公约数和最小公倍数
求两个正整数的最大筇瑰尬哇公约数和最小公倍数,需要用到数论里面的辗转相除法,假设a,b两个整数,并且a>b,(a,b像粜杵泳)代表a和b的最小公约数,那么(a,b)=(a%b,b),简单证明一下,假设a = b*m +r,d代表a和b的任意公约数,d|a,代表d整除a,d|a,d|b,那么d | (b*m +r),那么d|r,那么d是b和r的公约数;反之,c是r和b的公约数,c|r,c|b,=>c|(b*m+r),所以c|a,所要c也是a和b的公约数,那么最大的也相同。最小公倍数是两个数的乘积除以最大公倍数。在c语言中代码如下:
在代码中,求最大公约数,用相除法,求得余数,直到一个数为0,循环结束,上面代码求得20到30之间任意两个数的最大公约数,结果如下:
最小公倍数就是两个数的乘积除以最大公约数,代码只需改一下把printf改一下
改为 如图
显示结果如图:
[a,b]代表a和b的最小公倍数。希望上面的知识对您有用。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:65
阅读量:29
阅读量:43
阅读量:82
阅读量:58