[蓝桥省题](C2013_5) 公约数公倍数

5、(公约数公倍数)我们经常会用到求两个整数的最大公约数和最小公倍数的功能,下面的程序给出了一种算法,函数Myfunc接受两个正整数a,b经过运算后打印出:它们的最大公约数和最小公倍数,此时,调用Myfunc(15,20)

将会输出:5 60

程序如下:

void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
void myfunc(int a, int b)
{
    int m, n, tr;
    if (a < b) swap(&a, &b);
    m = a; n = b; tr = a % b;
    while (tr != 0)
    {
        a = b;
        b = tr;
        tr = a % b;
    }
    printf("%d\n", b);//最大公约数
    printf("%d\n", ________________________________________________);//最小公倍数
}

请分析代码逻辑,并推测划线处的代码,通过网页提交

注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号、或说明文字!!!

题意:这题不难懂,就是让你根据代码逻辑,题目是让你根据最大公倍数求出最小公约数就好

思路:这题考的是数学,包括程序用到的也是:辗转相除法:

img

注意:这题有个坑:

img

答案为:printf("%d",(m*n)/b);

教学视频如下所示:

<video controls="" src="https://axuannote-1304271763.cos.ap-nanjing.myqcloud.com/%E8%93%9D%E6%A1%A52013_5.mp4";></video>

本文链接:

https://nullcode.fun/94.html
1 + 1 =
快来做第一个评论的人吧~