c语言求最大公约数和最小公倍数


#include<stdio.h>
//函数嵌套(最大公约数} 
int hcf(int u,int v)
{
	int tep;
	if(u<v)//保证u>v 
	{
		tep=u;
		u=v;
		v=tep;
	}
	while(v!=0)
	{
		tep=u%v;
		u=v;
		v=tep;
	}
	return u;
}
//函数递归 (求最大公约数) 
 int hcf_2(int a, int b)
 {
 if(a%b==0)
 	{
	return b;
	 }
 else
	 {
	 	return hcf(b,a%b);
	 }
 }  
  //最小公倍数方法 一 
  //如果大数字除以小数字等于0,那么最小公倍数就是最大的数字
//如果不等于0,将最大公倍数扩大倍数,再来除以小数字看余数 
int lcd(int u, int v)
{
	int tep=1,k=1;
	if(u<v)//保证u>v 
	{
		tep=u;
		u=v;
		v=tep;
	}
	int a=u;//注意倍数扩增方法 
	while(tep!=0)
	{
		u=k*a;
		tep=u%v;
		k++ ;
	}
	return u; 
}
//最小公倍数方法二
//两数相乘除以最大公约数 
int lcd_2(int u, int v,int h)
{
	return(u*v/h);
}
//函数递归
//不会将参数依次增倍 
int lcd_3(int u, int v)
{
		int tep;
	if(u<v)//保证u>v 
	{
		tep=u;
		u=v;
		v=tep;
	}
	int k=1, a=u; 
	if(u%v==0)
	{
		return u;
	}
	else
	{
		return lcd_3(u+a,v);
	}
}
 
int main()
{
int u, v, h, l;
scanf("%d,%d",&u, &v);
h=hcf_2(u,v);
l=lcd_2(u,v,h);
printf("%d\n",h);
printf("%d\n",l); 
	return 0;
 } 	

求最小公倍数用函数递归不会做,蹲大佬指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值