MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

How would you split 5 loaves of bread among 8 people in all fairness? Get a hint from the Pharaohs. 5/8 = 4/8 + 1/8 , i.e. each receives 1/2 of loaf plus 1/8 - splitting 4 loaves into 1/2 and then the last loaf into 8 pieces.

Egyptian fraction is writing any rational number p/q in terms of unity fractions;

e.g.

3/4 = 1/2 + 1/4, OR = 1/3 + 1/4 + 1/6

13/48 = 1/4 + 1/48

Write a program to return the Egyptian fraction of a given rational number p, q. You outputs in the above cases should be the series of denominator values,

i.e. egyptian_fraction( 13, 48) should return [4,48],

You can use simple greedy algorithm or alternatives.

**References**

- http://en.wikipedia.org/wiki/Egyptian_fraction
- AMS blog post by Tyler Clark (@tylermath12) http://blogs.ams.org/jmm2014/2014/01/17/friday-morning-math-fun/
- Bonus points if you can enumerate all possible Egyptian fractions of (p,q), but thats a problem for another day.

P.S: Updated test suite to check for proper solutions only

12 correct solutions
11 incorrect solutions

Last solution submitted on Jun 25, 2015

1 player likes this problem

3 Comments

Marco Castelli
on 23 Jan 2014

Sorry this is not the solution. Output is not an integer

James
on 23 Jan 2014

Time to update the test suite again...

Muthu Annamalai
on 24 Jan 2014

I'm always happy to have a learning opportunity

2 Comments

Jon
on 21 Jan 2014

While this meets the letter of the problem requirements, it clearly violates the spirit. I recommend using "unique(denom = egyptian_fraction(Vmin,Vmax));" to prevent this.

Muthu Annamalai
on 21 Jan 2014

Interesting observation.

1 Comment

Muthu Annamalai
on 20 Jan 2014

Please resubmit your solution; previous test suite was buggy.

1 Comment