Skip to content

Commit 288d167

Browse files
committed
Add initial activity for egyptian fractions
1 parent 937cbf0 commit 288d167

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.packt.datastructuresandalg.lesson4.activity.egyptian;
2+
3+
import java.util.List;
4+
5+
public class EgyptianFractions {
6+
public List<Long> build(Long numerator, Long denominator) { return null; }
7+
8+
public static void printResult(Long numerator, Long denominator) {
9+
EgyptianFractions fractions = new EgyptianFractions();
10+
List<Long> ds = fractions.build(numerator, denominator);
11+
System.out.print(numerator + "/" + denominator + " =");
12+
for (int i = 0; i < ds.size(); i++) {
13+
System.out.print(" 1/" + ds.get(i));
14+
if (i + 1 < ds.size())
15+
System.out.print(" +");
16+
else
17+
System.out.print("\n");
18+
}
19+
}
20+
21+
public static void main(String[] args) {
22+
printResult(2l, 3l);
23+
printResult(6l, 14l);
24+
printResult(12l, 13l);
25+
}
26+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.packt.datastructuresandalg.lesson4.activity.egyptian.solution;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class EgyptianFractions {
7+
public List<Long> build(Long numerator, Long denominator) {
8+
if (numerator == 0 || denominator == 0)
9+
return new ArrayList<>();
10+
11+
if (denominator % numerator == 0) {
12+
List<Long> l = new ArrayList<>();
13+
l.add(denominator / numerator);
14+
return l;
15+
}
16+
17+
Long n = denominator / numerator + 1;
18+
List<Long> r = build(numerator * n - denominator, denominator * n);
19+
r.add(n);
20+
return r;
21+
}
22+
23+
public static void printResult(Long numerator, Long denominator) {
24+
EgyptianFractions fractions = new EgyptianFractions();
25+
List<Long> ds = fractions.build(numerator, denominator);
26+
System.out.print(numerator + "/" + denominator + " =");
27+
for (int i = 0; i < ds.size(); i++) {
28+
System.out.print(" 1/" + ds.get(i));
29+
if (i + 1 < ds.size())
30+
System.out.print(" +");
31+
else
32+
System.out.print("\n");
33+
}
34+
}
35+
36+
public static void main(String[] args) {
37+
printResult(2l, 3l);
38+
printResult(6l, 14l);
39+
printResult(12l, 13l);
40+
}
41+
}

0 commit comments

Comments
 (0)