Hola, he escrito un código que debería devolverme el mayor factor primo de un número, pero el programa nunca llega a salir del bucle. El caso es que creo que el número que necesito introducir es demasiado largo y el programa se cuelga, pero si pruebo con un numero más pequeño el programa funciona sin problema.
#include <iostream>
using namespace std;
int long long factorPrimoMayor (int long long numero);
int main () {
int long long numero = 600851475143;
cout << factorPrimoMayor (numero);
return 0;
}
int long long factorPrimoMayor (int long long numero) {
int long long mayor;
int long long i = numero-1;
bool encontrado = false;
while (!encontrado && (i > 1)) {
if ((i%2 != 0) && (i%3 != 0)) {
if (numero%i == 0) {
mayor = i; // Como va de mayor a menor y solo me interesa el factor primo mas grande, solo necesito el primero que encuentre.
encontrado = true;
}
else
i--;
}
else
i--;
}
return mayor;
}