解题思路:最小公倍数和最大公约数用到了算法,这个比较简单,需要记住

注意事项:记住就好,别弄错变量

参考代码:

  1. 辗转相除法

    #include <stdio.h>

    int main (void)

    {

        int x,y,z,m,n;

        scanf("%d%d",&x,&y);

        m = x;

        n = y;

        while(y!=0)

        {

            z = x%y;

            x = y;

            y = z;

        }

        printf("%d %d",x,m*n/x);

    return 0;

    } 



    2.辗转相减法

    #include <stdio.h>

    int main (void)

    {

        int x,y,m,n;

        scanf("%d%d",&x,&y);

        m = x;

        n = y;

        while(y!=x)

    {

        if(x>y)

        {

            x = x-y;

        }

        if(y>x)

        {

            y = y-x;

        }

    }

    printf("%d %d",x,m*n/x);

    return 0;

    } 


点赞(5)
 

0.0分

26 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 8 条评论

ok 2年前 回复TA
@ok 谢谢
夏至 3年前 回复TA
@ok 最后得出来的是x=y,所以都行
ok 3年前 回复TA
为什么辗转相减法不受大小影响,而去为什么最大公约数一定是x,而不是y呢
AIRZION 4年前 回复TA
#include<stdio.h>
int main()
{
    int m,n,a,b,i;
    scanf("%d %d",&m,&n);
    for(i=1;i<=m*n;i++)
    {
        if(i%m==0&&i%n==0)
        break;
    }
    printf("%d",i);
	return 0;
}
最小公倍数运行出来了,最大公约数好难
曹宝龙 5年前 回复TA
@曹宝龙 不好意思,我看错了
曹宝龙 5年前 回复TA
为什莫答案错误50%
黑飞蛾 5年前 回复TA
有没有大佬告诉我一下我哪错了
#include <stdio.h>
int gcb(int x, int y);
int main(void)
{
	int x, y, z=0;
	scanf("%d%d", &x, &y);
	printf("%d %d",gcb(x, y),x*y/gcb(x,y));
	return 0;

}
int gcb(int x, int y)
{
	if (x ==y)
	{
		return x;
	}
	else
	{
		if (x > y)
		{
			x = x - y;
			return gcb(x, y);
		}
		else
		{
			x = y - x;
			return gcb(x, y);
		}
	}

}
天空之城 5年前 回复TA
谢谢