zoukankan      html  css  js  c++  java
  • 辗转相除

    节选自:(http://zhidao.baidu.com/question/5920943.html

    若 a
    =bq+r,则a和b的最大公因子等于b和r的最大公因子绝对值(都为整数) 

    比如求4864和3458的最大公因子: 
    4864=1*3458+1406 
    3458=2*1406+646 
    1406=2*646+114 
    646=5*114+76 
    114=1*76+38 
    76=2*38+0 
    所以4864和3458的最大公因子为38

    自己跟据这个,写了个用辗转相除求两个数最大公因子的方法。

            int getIn(int a, int b)
            
    {
                
    if (b == 0return a;
                
    return getIn(b, a % b);
            }


    百度搜索了一下,果然还是别人的方法简单。

    辗转相除递归算法:
    //求最大公约数,公式if(a=b*q+r)then(gcd(a,b)=gcd(b,r))
    int gcd(int a,int b)
    {
        
    return (a%b)?gcd(b,a%b):b;
    }
    非递归算法:
    //非递归辗转相除
    int gcd(int a,int b)
    {
        
    int r=0;
        r
    =a%b;
        
    while(r)
        
    {
            a
    =b;
            b
    =r;
            r
    =a%b;
        }

        
    return b;
    }
  • 相关阅读:
    Linux 安装nginx
    Linux服务器svn与项目同步
    Linux服务器安装svn
    Thinkphp5模板继承
    Thinkphp5 Route用法
    一键切换hosts文件
    lnmp手动新建虚拟机
    wamp 配置虚拟主机
    百度编辑器
    百度编辑器:上传图片二
  • 原文地址:https://www.cnblogs.com/zxsoft/p/940155.html
Copyright © 2011-2022 走看看