public class Fraccion { // Numerador de la fraccion private long P; // Denominador de la fraccion private long Q; // Constructor nulo fraccion 0/1 public Fraccion() { P = 0; Q = 1; } // Constructor con un objeto Fraccion public Fraccion (Fraccion a) { P = a.numerador(); Q = a.denominador(); } // Constructo con numerador P y denominador Q public Fraccion (long p, long q) { P = p; Q = Math.abs(q); } // Constructor con entero P Fraccion P/1 public Fraccion (long p) { P = p; Q = 1; } // Simplifica el numerador y denominador de la fraccion private void simplifica(CalculaPrimos prim) { int i, sw; long pr; // Simplifica a la fraccion cero if(P == 0) Q = 1; for (i = 0; i < prim.numeroPrimos(); i++) { pr = prim.primo(i); if (pr > Math.abs(P) && pr > Q) break; do { sw = 0; if (Math.abs(P) < 2 || Q < 2) break; if((P % pr == 0) && (Q % pr == 0)) { P /= pr; Q /= pr; sw = 1; } } while(sw == 1); } } // Retorna el Numerador public long numerador() { return P; } // Retorna el denominador public long denominador() { return Q; } // Suma de fracciones con un operando public void suma(Fraccion a) { P = numerador() * a.denominador() + a.numerador() * denominador(); Q = denominador() * a.denominador(); } // Suma de fracciones con dos operandos public void suma(Fraccion a, Fraccion b) { P = a.numerador() * b.denominador() + b.numerador() * a.denominador(); Q = a.denominador() * b.denominador(); } // Visualiza la Fraccion public void visualiza() { System.out.print(P); System.out.print("/"); System.out.print(Q); } // Visualiza la fraccion y cambia de linea public void visualizaLN() { visualiza(); System.out.println(" "); } // Ejemplito de uso ... public static void main(String[] args) { CalculaPrimos prim = new CalculaPrimos(10); prim.visualiza(); Fraccion a, b, c; a = new Fraccion(2, 3); b = new Fraccion(2, 6); c = new Fraccion(); b.visualizaLN(); b.simplifica(prim); b.visualizaLN(); System.out.println("Suma"); a.visualiza(); System.out.print(" + "); b.visualiza(); System.out.print(" = "); c.suma(a, b); c.simplifica(prim); c.visualizaLN(); System.out.println("Suma"); a.visualiza(); System.out.print(" + "); b.visualiza(); System.out.print(" = "); a.suma(b); a.simplifica(prim); a.visualizaLN(); } };