C++中如何高效求取最大公约数

分类:知识百科 日期: 点击:0

C++中求取最大公约数有辗转相除法和更相减损术两种常用的方法。

辗转相除法

辗转相除法是求取最大公约数的一种经典算法,它的思想是:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。

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

以上是C++实现辗转相除法的一个简单示例,它的实现原理是先求出a和b的余数,用b除以余数,得到最大公约数。

更相减损术

更相减损术也是一种求取最大公约数的算法,它的思想是:两个正整数a和b(a>b),它们的最大公约数等于a和b中较小的数减去较大的数的差值c和较大的数之间的最大公约数。

int gcd(int a, int b) {
    if (a == b) return a;
    if (a > b) return gcd(a - b, b);
    return gcd(a, b - a);
}

以上是C++实现更相减损术的一个简单示例,它的实现原理是先求出a和b的差值,用较小的数减去差值,得到最大公约数。

以上就是C++中求取最大公约数的两种常用方法,辗转相除法和更相减损术,它们都是高效的算法,可以有效求取最大公约数。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。