写好了, 试试 (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());