`
rein07
  • 浏览: 21826 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

求解最大公约数问题

 
阅读更多
最大公因数,又称最大公约数。是指 [n(≧2)个自然数 a1, a2, ..., an] 的最大公因数。通常有两种表示方式:

它们的所有公因数中最大的那一个;
如果自然数 m 是这 n 个自然数的公因数,且这 n 个数的任意公因数都是 m 的因数,就称 m 是这 n 个数的最大用因数。通常国内的记述方式为 [(a1, a2, ..., an)] ,国际通用的记号为 [g.c.d.(a1, a2, ..., an)]。
欧几里得算法(Euclidean Algorithm)(Euclid‘s 算法)就是通常所说的求最大公因数的辗转相除法。算法描述如下:

如果 a 除以 b 能整除,则最大公约数是 b;
否则,最大公约数等于 b 和 a % b的公约数。
代码实现如下:

#include <stdio.h>

int Euclidean(int parA, int parB)
{
    if (parB == 0) {
        return parA;
    } else {
        return Euclidean(parB, parA % parB);
    }
}

int main(void)
{
    int intA, intB;

    printf("Enter two number to calculate its GCD:\n");
    scanf("%d %d", &intA, &intB);
    printf("The GCD of %d and %d is %d\n", intA, intB, Euclidean(intA, intB));

    return 0;
}

或者

#include <stdio.h>

int Euclidean(int parA, int parB)
{
    return (!parB)?parA : Euclidean(parB, parA % parB);
}

int main(void)
{
    int intA, intB;

    printf("Enter two number to calculate its GCD:\n");
    scanf("%d %d", &intA, &intB);
    printf("The GCD of %d and %d is %d\n", intA, intB, Euclidean(intA, intB));

    return 0;
}

分享到:
评论

相关推荐

    分解质因数实现求解最大公约数

    c语言编写分解质因数实现求解两个数的最大公约数

    不同方案求解最大公约数及时间复杂度分析

    不同方案求解最大公约数及时间复杂度分析 本文总结了四种不同的方案来求解最大公约数:暴力枚举法、欧几里得算法、更相减损法和Stein算法,并对它们的时间复杂度进行了分析。 暴力枚举法 暴力枚举法是一种简单的...

    利用C语言求解最大公约数

    在学习C语言的过程中,求解最大公约数(Greatest Common Divisor, GCD)是一个经典的入门级问题,它能帮助初学者更好地理解和应用C语言的基本语法。 最大公约数是指两个或多个非零整数的最大公共因数,它是这些整数...

    VB源码:求解最大公约数和最小公倍数并绘图.rar

    在这个“VB源码:求解最大公约数和最小公倍数并绘图.rar”压缩包中,包含了一个VB程序,它不仅实现了计算两个或多个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的...

    求最大公约数最小公倍数的3种算法的流程图

    辗转相除法,又称欧几里得算法,是最古老的求解最大公约数的方法之一。其基本思想是:对于任意两个正整数a和b(a&gt;b),它们的最大公约数等于a除以b的余数c与b之间的最大公约数。可以表示为GCD(a, b) = GCD(b, a % b)...

    利用三种算法求最大公约数

    在计算机科学和编程领域,求解最大公约数(Greatest Common Divisor,GCD)是一项基本的任务,它在数学和算法设计中具有广泛的应用。本文将深入探讨三种不同的方法来计算两个整数的最大公约数:分解质因数法、连续...

    欧几里德算法求解多个数的最大公约数

    对于多个数的最大公约数问题,我们可以采用扩展欧几里得算法或者递归的方法来解决。扩展欧几里得算法不仅能找到两个数的最大公约数,还能找到它们的一个线性组合,使得这个组合的结果等于最大公约数。对于三个或更...

    最大公约数的实例

    此外,除了欧几里得算法,还有其他方法可以求解最大公约数,如辗转相除法(也叫更相减损法)、质因数分解法等。每种方法都有其适用场景和效率差异,理解这些算法的原理有助于我们在实际问题中做出最佳选择。 在实际...

    最大公约数算法

    最大公约数(Greatest Common ...通过理解这些知识点,你可以熟练地在C语言中实现最大公约数算法,并在实际问题中灵活运用。无论是基础的数据结构课程,还是高级的算法设计,最大公约数都是一个重要的基础知识点。

    最大公约数——三种算法

    以下将详细介绍三种常见的求解最大公约数的算法:欧几里得法、循环测试法和质因数分解法。 1. **欧几里得法**: 欧几里得算法,又称为辗转相除法,是由古希腊数学家欧几里得提出的一种高效求解最大公约数的方法。...

    Verilog求最大公约数

    求解最大公约数有多种方法,其中包括欧几里得算法,也被称为辗转相除法。这个算法基于这样一个原理:对于任何两个正整数a和b(假设a&gt;b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。如果余数为0,则b...

    C语言求两个数的最大公约数和最小公倍数

    在给定的C语言代码中,虽然实现了求解最大公约数和最小公倍数的基本功能,但采用的方法较为原始且效率较低。代码首先通过循环从大到小查找最大公约数,再从小到大查找最小公倍数。这种遍历的方式对于大数而言效率极...

    用递归算法实现两个整数最大公约数的计算

    通过上述分析,我们可以看到递归算法在解决数学问题,特别是最大公约数计算上的应用。递归不仅简化了代码,还体现了算法设计中的“分而治之”策略,使得原本复杂的问题得以优雅地解决。然而,递归算法也有其局限性,...

    求 两个数 的 最大公约数

    求解最大公约数的方法有很多,其中最常用的是辗转相除法(欧几里得算法)和更相减损法。 ##### 1. 辗转相除法(欧几里得算法) 辗转相除法是一种非常高效的求解最大公约数的方法。该算法的基本思想如下: - 设两...

    最小公倍数 最大公约数_最小公倍数_最大公约数_

    压缩包中的"最大公约数(子VI).vi"可能是一个LabVIEW程序,利用了辗转相除法或其他方法实现求解最大公约数的功能。LabVIEW是一种图形化编程语言,它通过虚拟仪器(VI)来表示各种功能和算法。这个子VI可能作为模块...

    用辗转相除法求最大公约数

    除了辗转相除法之外,还可以使用更相减损法、质因数分解等方法求解最大公约数。 #### 4.2 C语言中的其他数学函数 C语言提供了丰富的数学函数,如求绝对值的`abs`、求平方根的`sqrt`等,这些函数可以帮助我们解决更...

    初等数论中最大公约数、最小公倍数(递归实现)程序

    在计算机科学领域,尤其是编程实践中,我们经常需要处理数学问题,其中包括初等数论中的概念,如最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)。这两个概念在算法设计和...

    java求最大公约数.md

    无论是正数还是负数,甚至是非整数类型,只要能够进行取模运算,就可以采用这种方法求解最大公约数问题。在实际开发过程中,这种方法被广泛应用于各种数学计算、数据处理等场景,具有很高的实用价值。

    Java求两个数的最大公约数、最小公倍数.rar

    辗除法是由古希腊数学家欧几里得提出的一种求解最大公约数的方法,它的核心思想是:对于任意两个正整数a和b(a&gt;b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。换句话说,gcd(a, b) = gcd(b, a % b),...

Global site tag (gtag.js) - Google Analytics