C#数据结构-求最大公约数和最小公倍数[辗转相除法]

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

 

 

 


       

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

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

            num3 
= num1 % num2;
            
while (num3 != 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                num1 
= num2;
                num2 
= num3;
                num3 
= num1 % num2;
            }

            
return Math.Abs(num2);
        }


ExpandedBlockStart.gifContractedBlock.gif        
/**/ /// <summary>
        
/// 求最小公倍数
        
/// </summary>
        
/// <param name="num1"></param>
        
/// <param name="num2"></param>
        
/// <returns></returns>

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


 

 

转载于:https://www.cnblogs.com/zbo/archive/2009/06/28/1512765.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值