zoukankan      html  css  js  c++  java
  • C#数据结构求最大公约数和最小公倍数[辗转相除法]

    可用“辗转相除法”求,算法如下:
    1)求出m除以n的余数,存放在变量r中;
    2)若余数r为0则执行步骤6,否则执行步骤3;
    3)把除数作为新的被除数,把余数作为新的除数;
    4)求出新的余数r;
    5)重复步骤2到4;
    6)输出n,n即为最大公约数。


           

     /// <summary>
            
    /// 求最大公约数
             
    /// 辗转相除法
              
    /// </summary>
            
    /// <param name="num1"></param>
            
    /// <param name="num2"></param>
            
    /// <returns></returns>

            public static int getGreatestCommonMeasure(int num1, int num2)
            
    {
                
    if (num1 == 0return Math.Abs(num2);
                
    if (num2 == 0return Math.Abs(num1);
                
    int num3 = 0;
                
    //insure: num1 >= num2
                if (num1 < num2)
                
    {
                    num3 
    = num1;
                    num1 
    = num2;
                    num2 
    = num3;
                }

                num3 
    = num1 % num2;
                
    while (num3 != 0)
                
    {
                    num1 
    = num2;
                    num2 
    = num3;
                    num3 
    = num1 % num2;
                }

                
    return Math.Abs(num2);
            }


            
    /// <summary>
            
    /// 求最小公倍数
            
    /// </summary>
            
    /// <param name="num1"></param>
            
    /// <param name="num2"></param>
            
    /// <returns></returns>

            public static int getLeastCommonMultiple(int num1, int num2)
            
    {
                
    int GCM = getGreatestCommonMeasure(num1,num2);
                
    if (GCM == 0return 0;
                
    return num1 * num2 / GCM;
            }


  • 相关阅读:
    编写更好的API
    C,C++语法基础 | 字符串 | 05
    C,C++语法基础 | 变量,表达式与顺序语句 | 01
    业务数据分析 | 深入浅出数据分析入门 | 01
    linux全套 | 目录 | 00
    linux全套 | 组管理和权限管理 | 08
    linux全套 | crond任务调度 | 09
    linux全套 | linux磁盘分区,挂载 | 10
    linux全套 | 网络配置 | 11
    linux全套 | 进程管理 | 12
  • 原文地址:https://www.cnblogs.com/zbo/p/1512765.html
Copyright © 2011-2022 走看看