运用蛮力法对分数化简问题进行求解。
有关蛮力法的另一个例题详见:https://blog.csdn.net/qq_61993592/article/details/121725152?spm=1001.2014.3001.5501
【问题】设计算法,将一个给定的真分数化为最简分数形式。如:将6/8化简为3/4
【算法】
输入:任意一个真分数
输出:化简后的分数
1.int m,n;
2.定义一个用于循环的变量int i;for(i=m;i>=1;i--),i从分子m开始依次递减
3.判断,当i能同时被m和n整除时即开始化简操作
if ((m%i==0)&&(n%i==0))
{
m = m / i;
n = n / i;
}
代码如下:
#include<stdio.h>
int main()
{
int m, n, i;
scanf("%d/%d", &m, &n); //输入分式
for (i = m; i >= 1; i--) //循环找出最大公因数
{
if ((m%i==0)&&(n%i==0)) //判断是否为公因数
{
m = m / i; //化简
n = n / i;
}
}
printf("%d/%d", m, n); //输出化简后的分式
return 0;
}
结果:
12/38
6/19
该例题用到了蛮力法的思想,设置循环从分子开始每次递减1来寻找公因数,每次递减后得到的数都要判断是否为公因数,从而执行后续化简操作。