Skip to content

Commit b373fd0

Browse files
authored
Update EgyptianFraction.java
Egyptian Fraction Greedy Algorithm
1 parent d1efd19 commit b373fd0

File tree

1 file changed

+11
-32
lines changed

1 file changed

+11
-32
lines changed

src/main/java/com/thealgorithms/greedyalgorithms/EgyptianFraction.java

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,49 +4,28 @@
44
// Problem Link: https://en.wikipedia.org/wiki/Greedy_algorithm_for_Egyptian_fractions
55

66
public class EgyptianFraction {
7-
// Function to decompose a fraction into a sum of unit fractions
8-
public static List<String> getEgyptianFraction(int numerator, int denominator) {
9-
List<String> result = new ArrayList<>();
7+
8+
public List<String> getEgyptianFraction(int numerator, int denominator) {
9+
List<String> fractions = new ArrayList<>();
1010

11+
// Loop until the numerator becomes zero
1112
while (numerator != 0) {
12-
// Find the smallest unit fraction that can be subtracted
13-
if (denominator % numerator == 0) {
14-
result.add("1/" + (denominator / numerator));
15-
break;
16-
}
17-
int x = denominator / numerator + 1;
13+
// Find the smallest unit fraction
14+
int x = (denominator + numerator - 1) / numerator; // Ceiling of (denominator / numerator)
15+
fractions.add("1/" + x);
1816

19-
result.add("1/" + x);
20-
// Update numerator and denominator for the next iteration
17+
// Update the numerator and denominator
2118
numerator = numerator * x - denominator;
2219
denominator = denominator * x;
23-
24-
// Reduce the fraction by dividing numerator and denominator by their gcd
25-
int gcd = gcd(numerator, denominator);
26-
numerator /= gcd;
27-
denominator /= gcd;
2820
}
2921

30-
return result;
22+
return fractions;
3123
}
3224

33-
private static int gcd(int a, int b) {
34-
if (b == 0)
35-
return a;
25+
private int gcd(int a, int b) {
26+
if (b == 0) return a; // Compact if statement for readability
3627
return gcd(b, a % b);
3728
}
38-
39-
public static void main(String[] args) {
40-
int numerator = 5;
41-
int denominator = 6;
42-
43-
List<String> egyptianFractions = getEgyptianFraction(numerator, denominator);
44-
45-
System.out.println("Egyptian Fraction representation of " + numerator + "/" + denominator + " is:");
46-
for (String frac : egyptianFractions) {
47-
System.out.print(frac + " ");
48-
}
49-
}
5029
}
5130

5231

0 commit comments

Comments
 (0)