Advertisement

欧几里得算法的最大公约数递归与非递归实现

阅读量:

在数学领域,欧几里得算法,亦称辗转相除法,是一种用于计算最大公约数(greatest common divisor)的计算方法。该方法最早出现在欧几里得所著的《几何原本》中,具体位于第VII卷的命题i和ii部分,而在中国古代数学典籍《九章算术》中亦有相关记载,其历史可追溯至东汉时期。

两个整数的最大公约数指的是能够同时整除这两个整数的最大的正整数。

辗转相除法的核心原理在于:两个整数的最大公约数与其中较小的数值以及两数之差的最大公约数相等。例如,在252与105之间,其最大公约数为21(252 = 21 × 12;105 = 21 × 5);由于252 − 105 = 21 × (12 − 5) = 147,因此147与105的最大公约数同样为21。在此过程中,较大的数值被不断减小,从而使得这一过程可以持续进行下去,直到其中一个数值变为零为止。此时未变为零的那个数值即为这两个原始数值的最大公约数。

递归公式可表示为:

gcd(a,b) = gcd(b,a mod b) (假设a > b,并且r = a mod b,r不等于零)

复制代码
    /** * 欧几里得算法求最大公约数
     * 连续计算余数知道余数是0为止,最后的非零余数就是最大公因数
     * @param m
     * @param n
     * @return
     */
    p

全部评论 (0)

还没有任何评论哟~