解题思路:可以在纸上先用短除做一遍,会发现找到的最大公约数就是短除号前的那些数相乘,而最小公倍数又=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分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论