Search⌘ K

Solution: Find the Egyptian Fraction

Explore how to apply a greedy algorithm to find Egyptian fractions by decomposing a given fraction into a sum of unit fractions. Understand the process and recursion strategy to derive the largest possible unit fraction at each step, and analyze the time complexity to enhance your coding interview solutions.

We'll cover the following...

Solution

Java
class Fraction
{
public static void printEgyptianFraction(int numerator, int denominator)
{
//if either numerator or denominator is zero
if (denominator == 0 || numerator == 0){
return;
}
//numerator divides denominator -> fraction in 1/n form
if (denominator % numerator == 0) {
System.out.print("1/" + denominator / numerator);
return;
}
//denominator can divide numerator -> number not a fraction
if (numerator % denominator == 0) {
System.out.println(numerator / denominator);
return;
}
//if numerator greater than denominator
if (numerator > denominator) {
System.out.println(numerator / denominator + " , ");
printEgyptianFraction(numerator % denominator, denominator);
return;
}
//denominator greater than numerator here
int n = denominator / numerator + 1;
System.out.print("1/" + n + " , ");
//call function recursively for remaining part
printEgyptianFraction(numerator * n - denominator, denominator * n);
}
}
class Main{
public static void main(String[] args){
//Example 1
int numerator = 6, denominator = 14;
System.out.print("Egyptian Fraction Representation of " + numerator + "/" + denominator + " is\n ");
Fraction.printEgyptianFraction(numerator, denominator);
System.out.println();
//Example 2
numerator = 2;
denominator = 3;
System.out.print("Egyptian Fraction Representation of " + numerator + "/" + denominator + " is\n ");
Fraction.printEgyptianFraction(numerator, denominator);
}
}

Explanation

We can generate Egyptian fractions using the greedy algorithm. For a given number of the form n/d, where d > n, first find the greatest possible unit fraction, and then perform recursion for the remaining part.

For example, consider 6/146/14. We first find the ceiling of 14/6\lceil 14/6 \rceil ...