A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-8-17 12:06 编辑

利用欧几里德算法求解最大公约数
                                            上海传智播客  崔长春老师


利用欧几里德算法求两个正整数的最小公倍数又叫辗转相除法,他是基于如下定理:
两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
   例如:两个数1512,两数相除得余数为312和余数3这两个数的公约数为3,则1512这两个数的最大公约数就等于3.
很显然,根据上述定理,程序设计可以考虑两种实现方式,就是递归和循环。递归实现:
function gcd($max,$min){
                if($min==0){ return $max; }
                return gcd($min,$max % $min);
        }
        $num=gcd(40,12);
        echo $num;//结果:4
循环实现:
function gcd($max,$min){
                do{
                        $mod = $max % $min;
                        $max = $min;
                        $min = $mod;
                }while($mod != 0);
                return $max;
        }
        $num=gcd(55,35);
        echo $num;//结果:5  

1 个回复

倒序浏览

很不错,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马