static bool CheckFrancCurious(Fraction frac)
 {
     int divisorNum1 = frac.Divisor / 10;
     int divisorNum2 = frac.Divisor % 10;
     int dividendNum1 = frac.Dividend / 10;
     int dividendNum2 = frac.Dividend % 10;
     Fraction fracFinal = frac.ToFinalFraction();
     if (divisorNum1 == dividendNum1)
     {
         Fraction frac2 = new Fraction() { Dividend = dividendNum2, Divisor = divisorNum2 };
         Fraction frac2Final = frac2.ToFinalFraction();
         return fracFinal.Equals(frac2Final);
     }
     if (divisorNum1 == dividendNum2)
     {
         Fraction frac2 = new Fraction() { Dividend = dividendNum1, Divisor = divisorNum2 };
         Fraction frac2Final = frac2.ToFinalFraction();
         return fracFinal.Equals(frac2Final);
     }
     if (divisorNum2 == 0)
         return false;
     if (divisorNum2 == dividendNum1)
     {
         Fraction frac2 = new Fraction() { Dividend = dividendNum2, Divisor = divisorNum1 };
         Fraction frac2Final = frac2.ToFinalFraction();
         return fracFinal.Equals(frac2Final);
     }
     if (divisorNum2 == dividendNum2)
     {
         Fraction frac2 = new Fraction() { Dividend = dividendNum1, Divisor = divisorNum1 };
         Fraction frac2Final = frac2.ToFinalFraction();
         return fracFinal.Equals(frac2Final);
     }
     return false;
 }
 static void Main(string[] args)
 {
     Fraction temp = new Fraction()
     {
         Divisor = 49,
         Dividend = 98
     };
     List<Fraction> fracs = new List<Fraction>();
     for (int i = 10; i < 100; i++)
     {
         for (int j = i + 1; j < 100; j++)
         {
             Fraction frac = new Fraction()
             {
                  Divisor = i,
                   Dividend = j
             };
             fracs.Add(frac);
         }
     }
     List<Fraction> finalFracs = new List<Fraction>();
     foreach (Fraction frac in fracs)
     {
         if (CheckFrancCurious(frac))
             finalFracs.Add(frac);
     }
     int divisor = 1, dividend = 1;
     foreach (Fraction frac in finalFracs)
     {
         divisor *= frac.Divisor;
         dividend *= frac.Dividend;
     }
     Fraction resultFrac = new Fraction() { Divisor = divisor, Dividend = dividend };
     Console.WriteLine(resultFrac.ToFinalFraction().Dividend);
 }
 public Fraction ToFinalFraction()
 {
     Fraction temp = new Fraction() { Divisor = this.Divisor, Dividend = this.Dividend };
     int min = Math.Min(temp.Dividend, temp.Divisor);
     while (true)
     {
         if (min < 2)
             break;
         if (temp.Divisor % min == 0 && temp.Dividend % min == 0)
         {
             temp.Dividend = temp.Dividend / min;
             temp.Divisor = temp.Divisor / min;
             min = Math.Min(temp.Dividend, temp.Divisor);
             continue;
         }
         min--;
         if (min < 2)
             break;
         if (temp.Divisor % min == 0 && temp.Dividend % min == 0)
         {
             temp.Dividend = temp.Dividend / min;
             temp.Divisor = temp.Divisor / min;
             min = Math.Min(temp.Dividend, temp.Divisor);
             continue;
         }
     }
     return temp;
 }
        static void Main(string[] args)
        {
            List<Fraction> fracList = new List<Fraction>();
            Fraction target = new Fraction(){ Divisor = 3, Dividend = 7};

            Fraction result = new Fraction() { Divisor = 1, Dividend = MAXDIVIDEND };
            for (int i = 2; i <= MAXDIVIDEND; i++)
            {
                Fraction frac = FindCloseTo(i, target);

                if (frac == null)
                    continue;
                //Console.WriteLine(string.Format("[{0}] - {1}", i, frac.ToString()));
                if (frac > result)
                {
                    result = frac;
                    //Console.WriteLine(string.Format("current close to 3/7 is {0}",result.ToString()));
                }

            }
            Console.WriteLine("Result is {0}", result.Divisor);
        
        
        }
 static Fraction FindCloseTo(int dividend, Fraction target)
 {
     int divisor = (dividend * target.Divisor - 1) / target.Dividend;
     return new Fraction() { Dividend = dividend, Divisor = divisor };
 }