大家晚上好呀,今天要给大家解决昨天遗留的问题,就是这个不管我输入啥都是输出第一个

最大公约数(2.0)+最小公倍数_最小公倍数

然后就是我师兄之前说的血与泪的教训,就是之前他强调了无数次在scanf里两个%d%d间不要用空格或逗号,否则输入的时候没有按照这个格式会出问题,而且编译器不会提示哪里出错,果然我这次就犯了。找了好久,又问了好多人,终于找到错的地方啦,开心。

然后我们把scanf_s里面的空格删掉,就正常啦。然后我们也可以求这两个数的最小公倍数,只要我们拿这俩数相乘,然后÷最大公约数,就可以实现啦。下面是我的代码。大家可以借鉴下

最大公约数(2.0)+最小公倍数_最小公倍数_02

还有代码我以后尽量都会放出来,大家也可以复制去试试,然后记得复制过去的时候如果我有scanf_s 的话部分编译器可能过不了,所以如果过不了,就把它变成scanf就好啦

好啦,今天的分享到此结束,我们明天见。最后附上今天的代码。

代码:

#include <stdio.h>

int max(int i, int j);

int small(int i, int j);

int main()

{

int u, v, m, n, o, p;

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

scanf_s("%d%d", &u, &v);

o = max(u, v);

p = small(u, v);

printf("最大公约数是 % d", o);

printf("\n");

printf("最小公倍数是%d", p);

return 0;

}

int max(int i, int j)

{

int r = 0;

if (i > j)

{

 while ((r = (i % j)) != 0)

 {

  i = j, j = r;

 }

 return j;

}

if (i <= j)

{

 while ((r = j % i) != 0)

 {

  j = i, i = r;

 }

 return i;

}

}

int small(int i, int j)

{

int r;

r = (i * j) / max(i, j);

return r;

}