zoukankan      html  css  js  c++  java
  • 欧几里得算法(辗转相除法)

    辗转相除法可以用来计算两个整数的最大公因数(Dcd)。

    利用辗转相除法求最大公因数的步骤如下:

    第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0

    第二步:若r0=0,则n为m,n的最大公因数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1

    第三步:若r1=0,则r1为m,n的最大公因数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2

    ……

    依次计算直至rn=0,此时所得到的rn-1即为所求的最大公因数。

    简单来说,如果有两个正整数m,n(m>n),则m与n的最大公因数等于n和m%n的最大公因数,若n=0,m和n的最大公因数等于m。

    int Gcd(int m,int n)        //假定m>n
    {
      if(n==0)
         return m;
      else
         return Gcd(n,m%n);
    }

    如果要求两个数的最小公倍数,只需先求出gcd,再把两数之积除以Gcd即可。

    补充一个定理:
    如果M>N,则M mod N<M/2。

    证明:

    存在两种情况。如果N<=M/2,则由于余数小于N,故定理成立。如果N>M/2,此时M仅含有一个N,从而余数为M-N<M/2,定理得证。

  • 相关阅读:
    AD7606笔记
    转Keil 中使用 STM32F4xx 硬件浮点单元
    旋转编码器
    PT100/PT1000
    电压跟随器
    段式液晶驱动方法
    物联网的架构
    物联网的操作系统
    C8051开发环境
    解决time命令输出信息的重定向问题
  • 原文地址:https://www.cnblogs.com/yaoyueduzhen/p/4374209.html
Copyright © 2011-2022 走看看