{ public void repr(object obj)
{Console.WriteLine(obj.ToString());}
public Rational(int n, int d)
Console.WriteLine(this.num+" / "+this.denum);
static int GCD(int a, int b)
if (a<b){tmp=a;a=b;b=tmp;}
public override string ToString()
{return num.ToString() + " : "+ denum.ToString();}
public static Rational operator + (Rational r1,Rational r2)
Rational result = new Rational(0,1);
result.num = r1.num*r2.denum + r2.num*r1.denum;
result.denum=r1.denum *r2.denum;
int g = GCD(result.num,result.denum);
result.num=result.num/g;result.denum=result.denum/g;
public static Rational operator - (Rational r1,Rational r2)
Rational result = new Rational(0,1);
result.num = r1.num*r2.denum - r2.num*r1.denum;
result.denum=r1.denum *r2.denum;
int g = GCD(result.num,result.denum);
result.num=result.num/g;result.denum=result.denum/g;
public static Rational operator * (Rational r1,Rational r2)
Rational result = new Rational(0,1);
result.num = r1.num*r2.num;
result.denum=r1.denum *r2.denum;
int g = GCD(result.num,result.denum);
result.num=result.num/g;result.denum=result.denum/g;
public static Rational operator / (Rational r1,Rational r2)
Rational result = new Rational(0,1);
result.num = r1.num*r2.denum;
result.denum=r1.denum *r2.num;
int g = GCD(result.num,result.denum);
result.num=result.num/g;result.denum=result.denum/g;
public static bool operator >(Rational r1,Rational r2)
if(r1.num*r2.denum > r1.denum*r2.num) return true;
public static bool operator <(Rational r1,Rational r2)
if(r1.num*r2.denum < r1.denum*r2.num) return true;
public static void Main()
Rational a=new Rational(6,3);
Rational b=new Rational(4,5);
Console.WriteLine(g+" "+h);