C/C++教程

算法学习(4):gcd和exgcd

本文主要是介绍算法学习(4):gcd和exgcd,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

GCD

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

EXGCD

  1. 第一种
int exgcd(int a, int b, int &x, int &y)
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    int d = exgcd(b, a % b, x, y), x0 = x, y0 = y;
    x = y0;
    y = x0 - (a / b) * y0;
    return d;
}
  1. 第二种
int exgcd(int a, int b, int &x, int &y)
{
    if (b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x); //这里交换了x和y
    y -= (a / b) * x;
    return d;
}
这篇关于算法学习(4):gcd和exgcd的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!