多语言展示
当前在线:1052今日阅读:61今日分享:18

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的最小公倍数。希望上面的知识对您有用。
推荐信息