Solucionando Problem 3 – Project Euler
Este problema tenia un poco más de picantico ya que empezamos a revisar conceptos de factores primos y unos cuantos numeros long. Basicamente lo que se pide es hallar el factor primo más grande del numero que dan.
Problema
The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ?
Para llegar a esta solución lo que se hace es hallar el primer factor del numero dado, al numero resultante se le halla nuevamente el factor hasta que el numero no tenga más factores primos. Este sera el factor primo más grande.
Solución
/** * * The prime factors of 13195 are 5, 7, 13 and 29. * What is the largest prime * factor of the number 600851475143 ? * * @author codesandtags * */ public class Problem3 { public static void main(String[] args) { Problem3 solve = new Problem3(); System.out.println("Largest prime factor of 600851475143 : " + solve.largestPrimeFactor(600851475143l)); } /** * Recibe un numero al que se le halla el factor primo mas grande * * @param num * @return */ public long largestPrimeFactor(long num) { // Se itera hasta que el num deje de ser mayor que el primo for (long i = 1; i < num; i++) { if (num % i == 0) { num /= i; System.out.println("Prime : " + i + " : " + num); continue; } } // Finalmente se retorna el ultimo numero hallado como primo return num; } }
Add your comment