欧几里得算法

Posted magic-sea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧几里得算法相关的知识,希望对你有一定的参考价值。

一、背景及介绍

  在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法。两个整数最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数最大公约数等于其中较小的数两数相除余数的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为 252 − 105 = 21 × (12 − 5) = 147 ,所以147和105的最大公约数也是21。

二、递归与非递归实现

 1     /**
 2      * 递归实现
 3      * @param m
 4      * @param n
 5      * @return
 6      */
 7     public static int gcdRecu(int m, int n) {
 8         if (n == 0) {
 9             return m;
10         } else {
11             return gcdRecu(n, m%n);
12         }
13     }
14 
15     /**
16      * 迭代法
17      * @param m
18      * @param n
19      * @return
20      */
21     public static int gcdIter(int m, int n) {
22         int t = 1;
23         while (t != 0) {
24             t = m % n;
25             m = n;
26             n = t;
27         }
28         return m;
29     }

 

 

 

以上是关于欧几里得算法的主要内容,如果未能解决你的问题,请参考以下文章

求最大公约数的欧几里得算法与其伪代码

求最大公约数伪代码

最大公约数伪代码

欧几里得算法和扩展欧几里得算法

通俗易懂----欧几里得算法

欧几里得算法和扩欧