辗转相除法(求最大公约数或最小公倍数)

辗转相除法

  • 作用:
    • 可以用来求最大公约数
    • 可以求两数的最小公倍数
  • 原理:若a除以b的余数为r,则有(a,b)=(b,r),递归后,b就是他的最大公约数。
  • 算法演示:

方法一:

int gcd(int m,int n)
{
        int t = 1;
        while(t != 0)
        {
                t=m%n;
                m=n;
                n=t;
        }
        return m;
}

方法二:

int gcd(int m,int n)
{
        int t = 1;
        while(m%n != 0)
        {
                t=m%n;
                m=n;
                n=t;
        }
        return n;
}
//这个时候返回的是n,为什么呢?
//因为while的原因,当m%n等于0时,直接跳出循环了,没有m,n的转换了,这点困扰我好久。。。

方法三:递归

#include <iostream>
#include <conio.h>
using namespace std;

int gcd(int a, int b){
    return b == 0 ? a : gcd(b, a % b);
}

int main()
{
    cout << gcd(169, 48) << endl;
    _getch();
    return 0;
}

原文链接: https://www.cnblogs.com/qscgy/p/13341818.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    辗转相除法(求最大公约数或最小公倍数)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/368368

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午6:22
下一篇 2023年3月2日 下午6:22

相关推荐