private static void Main() { int[] numbers = Console.ReadLine().Split('/').Select(int.Parse).ToArray(); int p = numbers[0]; int q = numbers[1]; if (q == 0 || p > q) { Console.WriteLine("Error (fraction is equal to or greater than 1)"); } Fraction fraction = new Fraction(p, q); Fraction biggestFraction = new Fraction(1, 2); List<Fraction> egyptianFractions = GetEgyptianFractions(fraction, biggestFraction); Console.WriteLine(fraction + " = " + string.Join(" + ", egyptianFractions)); }
private static List<Fraction> GetEgyptianFractions(Fraction fraction, Fraction biggestFraction) { List<Fraction> result = new List<Fraction>(); while (fraction.CompareTo(biggestFraction) != 0) { if (fraction.CompareTo(biggestFraction) < 0) { while (fraction.CompareTo(biggestFraction) < 0) { var newFr = new Fraction(biggestFraction.Nominator, biggestFraction.Denominator + 1); biggestFraction = newFr; } } else { result.Add(biggestFraction); fraction -= biggestFraction; } } result.Add(biggestFraction); return result; }