当前位置: 代码迷 >> 综合 >> 两天不见,又一个没用的小技巧【最大公约数】【最小公倍数】【c语言递归实现】快来快来~
  详细解决方案

两天不见,又一个没用的小技巧【最大公约数】【最小公倍数】【c语言递归实现】快来快来~

热度:61   发布时间:2023-12-05 12:13:32.0

我们在刷题时有可能遇到一些要求我们用分数表示结果的题目,而且还要约分。这时候就涉及到要求最大公约数的方法了。网上有很多,但这个方法绝对在c语言中算得上【高级】

#include<stdio.h>
//求最大公约数和最小公倍数
int gongyue(int x, int y)
{if (y % x == 0)//这里一定是大数mod小数return x;elsereturn gongyue(y % x, x);
}
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);//首先要知道两个数的顺序;if (a > b){int cha = a;a = b;b = cha;//把大的放在后面;}int ret = gongyue(a, b);//最小公倍数=a*b/最大公约数。int min = a * b / ret;printf("%d和%d的最大公约数为%d\n", a, b, ret);printf("%d和%d的最小公倍数为%d\n", a, b, min);return 0;
}

运行结果如下

 把它当做一个公式吧~ 关于递归的知识,我学熟了以后在慢慢写。

当然,如果您想用暴力的话也没问题

用for循环从小值开始,一直到1,里面套一个if判断是否符合最大公约数的条件(注意双等号==哦~),符合就break;

代码实现十分简单,在具体的题目中用处很大。

希望与诸君共勉。

  相关解决方案