解题思路:

提供三种解题思路

  1. 辗转相除法

  2. 辗转相减法

  3. 递归


参考代码:

  //1.辗转相除法
void division(int x, int y)
{
 int temp, num;
 num = x * y;
 if(x < y)
 {
  temp = x; x = y; y = temp; 
 }
 while(y != 0)
 {
  temp = x % y;
  x = y;
  y = temp;
 }

printf("%d %d\n", x, num / x);


//2.辗转相减法
void subtract(int x, int y)
{
 int num;
 num = x * y;
 while(x != y)
 {
  if(x > y) x = x - y;
  else y = y - x;
 }
 printf("%d %d\n", x, num / x);
}

//3.递归
int dg(int x, int y)
{
 if(x == y) return y;
 else if(x > y) return dg(x - y, y);
 else return dg(x, y - x);
}


int main()
{
 int n1, n2;
 scanf("%d%d", &n1, &n2);
 division(n1, n2);
 subtract(n1, n2);
 printf("%d %d", dg(n1, n2), n1 * n2 / dg(n1, n2));
}

点赞(1)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论