我们在刷题时有可能遇到一些要求我们用分数表示结果的题目,而且还要约分。这时候就涉及到要求最大公约数的方法了。网上有很多,但这个方法绝对在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;
代码实现十分简单,在具体的题目中用处很大。
希望与诸君共勉。