解题思路:可以在纸上先用短除做一遍,会发现找到的最大公约数就是短除号前的那些数相乘,而最小公倍数又=m*n/最大公约数
注意事项:
参考代码:
#include<iostream>//我是模拟短除做的
using namespace std;
int main()
{
int m, n,i=2,gcf=1,lcm;//gcf是最大公约数简写,lcm是最小公倍数简写;i就是短除号前面那个除数
cin >> m >> n;
lcm = m * n;//先算一下m*n,因为后面要对其逐渐缩小,这样就不用加变量存储m,n的值了
while (i<=m&&i<=n)
{
if (m % i != 0 || n % i != 0)//如果i不是约数就往上找,如果是,可能下一轮还要除去的,就像8和4有两个2
i = i + 1;
else if (m % i == 0 && n % i == 0)//实现短除
{
m = m / i;
n = n / i;
gcf *= i;
}
else//说明i,i+1均不是公约数
i++;
}
cout << gcf << endl;
lcm /= gcf;
cout << lcm << endl;
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复