public Rational(int n, int d)
this.num=n; this.denum=d;
public Rational(Rational r)
this.num=r.num; this.denum=r.denum;
this.num=n; this.denum=1;
private static int GCD(int a,int b)
if (a<b){tmp=a;a=b;b=tmp;}
while (b!=0){r=a%b;a=b;b=r;}
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 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 Rational operator - (Rational r1, Rational r2)
Rational result = new Rational (0, 1);
int num = r1.num * r2.denum - r2.num *r1.denum;
int denum = r1.denum * r2.denum;
result.denum = denum / g;
public static Rational operator * (Rational r1, Rational r2)
Rational result = new Rational(0, 1);
int num = r1.num * r2.num;
int denum = r1.denum * r2.denum;
result.denum = denum / g;
public static Rational operator / (Rational r1, Rational r2)
Rational result = new Rational(0, 1);
int num = r1.num * r2.denum;
int denum = r1.denum * r2.num;
result.denum = 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()
Console.WriteLine("Hello World");