zoukankan      html  css  js  c++  java
  • sicily 6418. 最大公约数

    Description

     如果有一个自然数a能 被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大 公约数(greatest common divisor, gcd)。例: 在2、4、6中,2就是2,4,6的最大公约数。

    实现函数:

    int gcd(int m,int n);

    返回m,n的最大公约数,m,n>=1.

    有四种方法可以AC,即迭代/递归与更相减损/辗转相除的组合。

    /* 递归+更相减损 */
    int gcd (int m, int n)
    {
        if( m == n )
        { 
            return m;
        } 
        else if ( m > n )
        { 
            return gcd( m - n, n );
        } 
        else
        { 
            return gcd( n - m, m );
        } 
    }
    /* 迭代+更相减损 */
    int gcd ( int m, int n )
    {
        
        while ( m != n ) 
        {
            if ( m > n )
            {
                m = m - n;
            }
            else
            {
                n = n - m;
            }
        }
        
        return m;
    }
    /* 递归+辗转相除 */
    int gcd (int m, int n)
    {
        if ( n == 0 )
        {
            return m;
        }
        else if ( m == 0 )
        {
            return n;
        }
        else if ( m >= n )
        {
            return gcd ( m % n, n );
        }
        else
        {
            return gcd ( n % m, m );
        }
    }
    /* 迭代+辗转相除 */
    int gcd (int m, int n)
    {
        int r;
        
        while ( n != 0 )
        {
            r = n;
            n = m % n;
            m = r;
        }
        
        return m;
    }
  • 相关阅读:
    诸葛亮的后半生:狗笼子里挥舞丈八蛇矛
    一句话摘录
    【书摘】The Joshua tree epiphany
    玩具程序:bigInt
    旅行的力量
    记忆的力量
    快的力量
    Windbg学习笔记【4】
    戴尔笔记本win8全新安装
    悟透JavaScript
  • 原文地址:https://www.cnblogs.com/joyeecheung/p/2776442.html
Copyright © 2011-2022 走看看