C语言进阶:[9]求最大公约数和最小公倍数

2025-04-01 20:30:45

求两个正整数的最大筇瑰尬哇公约数和最小公倍数,需要用到数论里面的辗转相除法,假设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语言中代码如下:

C语言进阶:[9]求最大公约数和最小公倍数

在代码中,求最大公约数,用相除法,求得余数,直到一个数为0,循环结束,上面代码求得20到30之间任意两个数的最大公约数,结果如下:

C语言进阶:[9]求最大公约数和最小公倍数

最小公倍数就是两个数的乘积除以最大公约数,代码只需改一下把printf改一下

改为 如图

C语言进阶:[9]求最大公约数和最小公倍数

显示结果如图:

C语言进阶:[9]求最大公约数和最小公倍数

[a,b]代表a和b的最小公倍数。希望上面的知识对您有用。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢