用C语言求两个数的最大公约数和最小公倍数
发布网友
发布时间:2022-04-12 23:39
我来回答
共2个回答
热心网友
时间:2022-04-13 01:08
你可以编写一个程序,实现辗转相除法(欧几里得算法),来求得最大公约数,然后用两个数相乘再除以最大公约数来,得到最小公倍数。
#include
<stdio.h>
int
main()
{
int
a,
b,
c;
//a,
b就是M和N,c是余数
int
ta,
tb;
//用来记录a,b的临时值
int
maxgys,mingbs;
printf("请输入两个数:
");
scanf("%d%d",&a,&b);
ta
=
a;
tb
=
b;
if(ta
>
tb)
{ta
=
b;
tb
=
a;}
c
=
tb
%
ta;
while(c!=
0)
{
tb
=
ta;
//辗转相除的过程
ta
=
c;
c
=
tb
%
ta;
}
printf("%d和%d的最大公约数是:
%d\n",
a,
b,
ta);
printf("%d和%d的最小公倍数是:
%d\n",
a,
b,
a
*
b
/
ta);
return
0;
}
热心网友
时间:2022-04-13 02:26
#include<stdio.h>
int
f(int
a,int
b)
{
return
a%b!=0
?
f(
b,
a%b):
b;
/*这个源于一个算法,名字忘了,表达式知道什么意思吧,如果a%b!=0,递归,直到a%b=0,return
b,不好解释,但是肯定是正确的*/
}
int
main()
{
int
a,b;
scanf("%d,%d",&a,&b);
int
maxNsize
=
a*b
/
f(a,b);
int
minNsize
=
f(a,b);
printf("%d
",maxNsize);
printf("%d
",minNsize);
}