/**
思路:
两个分数相加的时候,要先进行通分,然后再进行约分。
所以要先求出两个分数中分母的最小公倍数,将分母变成一样,然后变换分子,进行相加的运算。
再求出相加后分子和分母的最大公约数,进行约分。
可以将求最小公倍数和最大公约封装成两个方法,这样可以提高代码的复用性,减少代码量。
*/
import java.util.Scanner;
class FractionAdd
{
public static void main(String[] args)
{
int fm1,fm2,fz1,fz2;
Scanner sc=new Scanner(System.in);
FractionAdd fa=new FractionAdd();
System.out.println("请输入第一个分数");
fz1=sc.nextInt();
fm1=sc.nextInt();
System.out.println("请输入第二个分数");
fz2=sc.nextInt();
fm2=sc.nextInt();
//先将两个分数进行通分
int num1=fa.gbs(fm1,fm2);
fz1=(num1/fm1)*fz1;
fz2=(num1/fm2)*fz2;
//然后将两个分数进行相加
int num2=fz1+fz2;
//然后将相加后得到的分数进行约分
int num3=fa.gys(num1,num2);
if(num2/num3==num1/num3)
{
System.out.println("相加的结果为1");
}else
{
System.out.println("相加的结果为"+num2/num3+"/"+num1/num3);
}
}
//求出两个数的最小公倍数
public int gbs(int n1,int n2)
{
int sum=n1*n2,i;
for(i=1;i<=sum;i++)
{
if(i%n1==0&&i%n2==0)
break;
}
return i;
}
//求出两个数的最大公约数
public int gys(int n1,int n2)
{
int r;
while(n2>0)
{
r=n1%n2;
n1=n2;
n2=r;
}
return n1;
}
}