zoukankan      html  css  js  c++  java
  • 求最大公约数

    今天做PAT时见到的Mark下了:

    long long gcd(long long a, long long b) {return b == 0 ? a : gcd(b, a % b);}

    或者用迭代方式:

    long long gcd(long long a,long long b)  
    {  
        long long z;  
        while(b)  
        {  
            z=a%b;  
            a=b;  
            b=z;  
        }  
        return a;  
    }

    特地去查了一下求最大公约数的算法,结果如下:

    辗转相除法   

    有两整数a和b:

    ① a%b得余数c

    ② 若c=0,则b即为两数的最大公约数

    ③ 若c≠0,则a=b,b=c,再回去执行

    例如求27和15的最大公约数过程为:

    27÷15 余12 15÷12余3 12÷3余0因此,3即为最大公约数

    以及另一种:

    相减法  

    有两整数a和b:

    ① 若a>b,则a=a-b

    ② 若a<b,则b=b-a

    ③ 若a=b,则a(或b)即为两数的最大公约数

    ④ 若a≠b,则再回去执行①

    例如求27和15的最大公约数过程为:

    27-15=12( 15>12 ) 15-12=3( 12>3 )

    12-3=9( 9>3 ) 9-3=6( 6>3 )

    6-3=3( 3==3 )

    因此,3即为最大公约数

    初中老师见了要吐血……

  • 相关阅读:
    SSH和SSL比较
    SSL虚拟主机安全方案
    https在电子邮件安全解决方案
    centos tomcat安装
    laravel 添加第三方扩展库
    laravel-1 安装.配置
    centos7.0 vsftp配置
    centos 日常操作指令
    centos redis 安装
    centos php 扩展安装
  • 原文地址:https://www.cnblogs.com/fallenmoon/p/7149474.html
Copyright © 2011-2022 走看看