寫好了, 試試 (C#)
複製程式
long a=1,b=10,c=4,d=5;
long Em,fm;
//通分
long bj = 0; //a和b要乘的倍數
long dj = 0; //c和d要乘的倍數
if(b%d==0)
{
dj = b/d;
bj = 1;
}
else if(d%b==0)
{
bj = d/b;
dj = 1;
}
else
{
//這是最偷懶的方法,容易溢位,建議參考下面的輾轉相除法求得b, d最小公倍數
bj = d;
dj = b;
}
Em = (a*bj)-(c*dj); //-號可替換成其它四則運算子
fm = b*bj;
long E = Em,f =fm;
//約分
long yinsu = 1;//分子母的最大公因數
if(E==f)
{
Em=1;
fm=1;
}
else if(E%f==0)
{
yinsu = f;
}
else if(f%E==0)
{
yinsu = E;
}
else
{
//輾轉相除法
do
{
E = E%f;
try
{
if(f%E!=0)
{
f = f%E;
}
else
{
yinsu = E;
break;
}
}
catch
{ yinsu = f;
break;
}
}while(true);//while條件式不重要,裡面有跳出的條件式
}
MessageBox.Show((Em/yinsu).ToString() + "/" + (fm/yinsu).ToString());