最小公倍数两种算法研究

最小公倍数两种算法研究

#include "stdio.h"

#define max(Num1,Num2) ((Num1)>=(Num2))?(Num1):(Num2)//最大值函数 


//递归法求最大公约数,递归存在漏洞,没有做用户合理性输入的检测,二次调用做合理检测!
int getComFactorRe(int Num1,int Num2)
{
if(0 == Num2)
return Num1;
return getComFactorRe(Num2,Num1%Num2);



//用公式法,最小公倍数 = (Num1 * Num2)/最大公倍数 
int getComMultiEx(int Num1,int Num2)
{
int MaxFactor = 0, MinMulti = 0;
if(Num1<=0||Num2<=0)//非法输入行为 
return -1;
MaxFactor = getComFactorRe(Num1,Num2);
MinMulti = Num1* Num2/MaxFactor;
return MinMulti;



//传统的算法,最小公倍数的本质就是在他们两个数中的最大数向上每次+1,直到找到这样的数同时满足整除两个数的就是最小公倍数 
int getComMulti(int Num1,int Num2)
{
int Temp = 0;
if(Num1 <= 0 || Num2 <= 0)// 用户输入数据合理性检测 
 return -1; 
if(Num1 == max(Num1,Num2))//保证输入是Num1 < Num2 
{
Temp = Num1;
Num1 = Num2;
Num1 = Temp;
}
//此时执行上面的程序之后Temp是他们的最大值 
//最小公倍数的本质就是在他们两个数中的最大数向上每次+1,直到找到这样的数同时满足整除两个数的就是最小公倍数 
while(Temp%Num1 || Temp%Num2)
{
Temp++;
}
return Temp;

}

//运行测试,下面运行结果都是8,运行平台是C-Free

int main(void)
{
printf("最小公倍数为;%d\n",getComMultiEx(2,8));
printf("最小公倍数为:%d\n",getComMulti(2,8));
return 0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值