天天看點

兩個分數相加

/**
思路:
兩個分數相加的時候,要先進行通分,然後再進行約分。
是以要先求出兩個分數中分母的最小公倍數,将分母變成一樣,然後變換分子,進行相加的運算。
再求出相加後分子和分母的最大公約數,進行約分。
可以将求最小公倍數和最大公約封裝成兩個方法,這樣可以提高代碼的複用性,減少代碼量。
*/
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;
	}
}