Greedy Solution to Activity Selection Problem.
April 29, 2020
Assign Mice to Holes
April 29, 2020

Greedy Algorithm for Egyptian Fraction

In early Egypt, people used to use only unit fraction (in the form of (1/n)) to represent the decimal numbers.

The fraction was always written in the form 1/n , where the numerator is always 1 and denominator is a positive number. All other fractions were represented as the summation of the unit fractions. For example, 3/4 = 1/2 + 1/4.

Given a positive fraction, write it in the form of summation of unit fractions.

Example:
 2/3 = 1/2 + 1/6
 6/14 = 1/3 + 1/11 + 1/231
 12/13 = 1/2 + 1/3 + 1/12 + 1/156

Greedy Solution:

For a given number of the form ‘nr/dr’ where dr > nr, first find the greatest possible unit fraction, then call the function recursively for the remaining part.

For example, consider 6/14. First find ceiling of 14/6, i.e., 3. The first unit fraction becomes 1/3.

The remaining fraction is 6/14 – 1/3 = 4/42. Now repeat the same algorithm for 4/42. The ceiling of 42/4 is 11. So the next unit fraction is 1/11.

Now we are left with 4/42 – 1/11 = 1/231. This is a unit fraction itself. So we stop the recursion. We stop when the result is a unit fraction.

6/14 = 1/3 + 1/11 + 1/231

class Egyptian Fraction
{ 
   static void printEgyptian(int nr, int dr) 
   { 
      if (0 == nr || 0 == dr) 
         return; 

      // IF nr IS MULTIPLE OF nr. THEN NOT A FRACTION
      if (nr % dr == 0) 
      { 
         System.out.print(nr / dr); 
         return; 
      } 
   
      // IF ALREADY A UNIT FRACTION. OR CAN BE DIRECTLY CONVERTED TO IT.
      // i.e dr divisible by nr  
      if (dr % nr == 0) 
      { 
         System.out.print("1/" + dr / nr); 
         return; 
      } 

      if (nr > dr) 
      { 
         System.out.print(nr / dr + " + "); 
         printEgyptian(nr % dr, dr); 
         return; 
      } 

      // PRINT ceiling(dr/nr) AS CURRENT FRACTION 
      int n = dr/nr + 1; 
      System.out.print("1/" + n + " + "); 

      // Recur for remaining part 
      printEgyptian(nr * n - dr, dr * n); 
   } 
} 

Note that there exists multiple solution to the same fraction. For example:

3/4 =  1/2 + 1/4

3/4 =  1/2 + 1/5 1/20

1 Comment

  1. Ta says:

    Hi team,

    Rather than preparing people for getting into american mnc,
    Why not involve them in solving any problems using tech to serve own country people.

    There are many areas where software can be built and people can be helped and many problems an be solved .we just need to look around .

    The rewards and satisfaction will be immense

Leave a Reply

Your email address will not be published. Required fields are marked *