算法系列——最大公约数

Posted BridgeGeorge

tags:

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

题目

如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

输入 a 和 b , 请返回 a 和 b 的最大公约数。

进阶:空间复杂度 O(1)O(1),时间复杂度 O(logn)O(logn)

解答

辗转相除法。

public class Solution 
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 求出a、b的最大公约数。
     * @param a int 
     * @param b int 
     * @return int
     */
    public int gcd (int a, int b) 
        // write code here
        if(a%b==0)
            return b;
        
        return gcd(a,a%b);
    

以上是关于算法系列——最大公约数的主要内容,如果未能解决你的问题,请参考以下文章

算法系列——最大公约数

算法系列——最大乘积子数组

算法系列——最大乘积子数组

C++ 算法主题系列之贪心算法的贪心之术

算法初探系列14——线性DP进阶之最大子段和与最长上升子序列

贪心算法 | leetcode 买卖股票系列