Estoy tratando de trabajar en el Proyecto Euler y estoy llegando a una barrera en el problema 03. Tengo un algoritmo que funciona para números más pequeños, pero el problema 3 usa un número muy, muy grande.Proyecto Euler Pregunta 3 Ayuda
Problema 03: Los factores primos de 13195 son 5, 7, 13 y 29. ¿Cuál es el mayor factor primo del número 600 851 475 143?
Aquí está mi solución en C# y ha estado funcionando durante cerca de una hora. No estoy buscando una respuesta porque realmente quiero resolver esto yo mismo. Principalmente buscando ayuda.
static void Main(string[] args) {
const long n = 600851475143;
//const long n = 13195;
long count, half, largestPrime = 0;
bool IsAPrime;
half = n/2;
for (long i = half; i > 1 && largestPrime == 0; i--) {
if (n % i == 0) { // these are factors of n
count = 1;
IsAPrime = true;
while (++count < i && IsAPrime) {
if (i % count == 0) { // does a factor of n have a factor? (not prime)
IsAPrime = false;
}
}
if (IsAPrime) {
largestPrime = i;
}
}
}
Console.WriteLine("The largest prime factor is " + largestPrime.ToString() + ".");
Console.ReadLine();
}
Si usted está interesado, que resolvieron este mediante el tamiz de Erasthosenes y un método GetPrimeFactors simples - http://www.geekality.net/2009/09/17/project-euler-problem-3/ – Svish