最大公约数最小公倍数(四种求法)

最大公约数最小公倍数(四种求法)

最大公约数最小公倍数的求解是我们初学者常遇见的问题,因此特意整理这四种求法。我认为函数的递归和辗转相除法可以较好的锻炼我们思维和加深函数递归知识。

枚举法

这中算法其实理解起来还是相对简单的就是两个数都进行整除两个数最小的,直到两个数整除到同时能被整除,此时的数就是最大公约数。

if(a%num==0&&b%num==0)

{

return num;

}

注意知识点

这里要让num进行递减,还有注意返回值。源码如下

#include

// 枚举法

int fun(int a,int b)

{

int num;

if(a==0||a==b)

return b;

else if(b==0||a==b)

return a;

//判断a b值得的大小

num=a>b?b:a;

while(num>1)

{

if(a%num==0&&b%num==0)

{

return num;

}

num--;

}

return num;

}

int main()

{

int a,b,num,p;

printf("请输入两个数:");

scanf("%d%d",&a,&b);

//公式法求最小公倍数

p=a*b;

num=fun(a,b);

printf("最大公约数为:%d\n最小公倍数:%d",num,p/num);

return 0;

}

相减法

相减法相较于枚举法,更加的高效,但是基本逻辑思维没有改变许多,通过两个数进行相减并再次赋值给原数,直到a等于b时得出最大公约数。

#include

// 相减法

int fun(int a,int b)

{

int num;

if(a==0||a==b)

return b;

else if(b==0||a==b)

return a;

//判断a b值得的大小

while(a!=b)

{

num=a>b?(a-=b):(b-=a);

}

return num;

}

int main()

{

int a,b,num,p;

printf("请输入两个数:");

scanf("%d%d",&a,&b);

//公式法求最小公倍数

p=a*b;

num=fun(a,b);

printf("最大公约数为:%d\n最小公倍数:%d",num,p/num);

return 0;

}

欧几里德辗转相除法

首先举一个列子就15和9,演示如下:15%9=1........6 9%6=1........3 6%3=2......0,这样就可以得到公倍数为3,最小公约数直接用公式法进行求出即可。不过这种方法要有一个注意点:就是要保证前面的数比后面的要大,因此我这里在开始辗转相除前进行判断并进行转换。

#include

int main()

{

int n,m,t,s,p;

scanf("%d%d",&n,&m);

if(n

{

t=m;

m=n;

n=t;

}

p=m*n;

while(m!=0)

{

s=n%m;//s存放余数

n=m;

m=s;

}

printf("最大公约数:%d",n);

printf("最小公倍数:%d",p/n);

return 0;

}

函数递归

函数具有递归和嵌套两种形式,这里我们讲述一下嵌套的两种形式一种有返回值,一种没返回值

这两种的调用方式是不一样的。有返回值时,可以使用“阶梯法”求解。

什么是阶梯法里:比如输入 15 9->9 6->6 3->3 0这种方法较好来理解就如台阶一样逐步向下,找到结果。

#include

int fun(int n,int m)

{

if(m==0)

return n;

else

return fun(m,n%m);

}

int main()

{

int n,m,t,s,p;

scanf("%d%d",&n,&m);

p=m*n;

fun(n,m);

printf("最大公约数:%d",fun(n,m));

printf("最小公倍数:%d",p/fun(n,m));

return 0;

}

总结

通过这四个案例,可以较好回忆知识点,这四个案例主要应用函数,涉及函数调用和递归,递归在函数中扮演了非常重要的角色。希望各位大佬看到有问题可以积极指正,一起进步。

相关推荐

闲鱼审核一般多长时间?凭证要多久?
365彩票数据最专业

闲鱼审核一般多长时间?凭证要多久?

📅 07-02 👁️ 8759
贪(汉语文字)
365账号限制投注怎么办

贪(汉语文字)

📅 07-05 👁️ 5205
Logo设计费用大概是多少?2024最新价格标准
365账号限制投注怎么办

Logo设计费用大概是多少?2024最新价格标准

📅 07-02 👁️ 6231
MDB合并工具:操作详解与应用实践
365彩票数据最专业

MDB合并工具:操作详解与应用实践

📅 07-01 👁️ 7101
如何做一个好闺蜜 你知道吗
s365 2.2.3

如何做一个好闺蜜 你知道吗

📅 07-06 👁️ 8633
英雄杀升50级最快的方法 英雄升15级需要多长时间,快速升级技巧分享
韩媒:中国男足输球却高兴地像赢了球,倒数第1竟梦想直通世界杯
图文-韩国1-1平美国 安贞焕头球攻入扳平之球瞬间
365彩票数据最专业

图文-韩国1-1平美国 安贞焕头球攻入扳平之球瞬间

📅 07-06 👁️ 4770
wow猎人宠物蠕虫在哪抓?
365账号限制投注怎么办

wow猎人宠物蠕虫在哪抓?

📅 06-30 👁️ 4396