解题思路:

        我们用辗转相除法求最大公约数:首先我们将较大的数当作被除数,较小的数当作除数,两者相除得到余数;再将原来较小的数当作被除数,刚刚得到余数当作除数,两者相除;这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)

举例:求5和7的最大公约数

第一次:7%5,余数为2;

第二次:5%2,余数为1;

第三次:2%1,余数为0结束。


最小公倍数=两数的乘积/最大公约数;


解题步骤:

1、首先输入两个正整数,并用一个变量存储它们的乘积

2、判断两个数的大小,将大的数放在前面,小的数放在后面

3、用辗转相除法求出最大公约数

4、用第一步存储乘积的变量除以最大公约数得到最小公倍数


注意事项:(除号后面的数叫做除数,除号前面的数叫做被除数)


参考代码:

#include <stdio.h>
int main()
{
	int a, b, temp;
	scanf("%d%d", &a, &b);
	int res = a * b;
	if (b > a)
	{
		temp = a;
		a = b;
		b = temp;
	}
	while (1)
	{
		temp = a % b;
		if (!temp)
			break;
		a = b;
		b = temp;
	}
	printf("%d %d", b, res / b);
	return 0;
}


点赞(1)
 

0.0分

7 人评分

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

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

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

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

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

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

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

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

评论列表 共有 2 条评论

春风十里不如你 2年前 回复TA
@大新小法师 就是当余数为零的时候直接跳出循环
大新小法师 2年前 回复TA
if(!temp)是什么意思