Encontrar factores primos
#include <iostream>
using namespace std;
void whosprime(long long x)
{
bool imPrime = true;
for(int i = 1; i <= x; i++)
{
for(int z = 2; z <= x; z++)
{
if((i != z) && (i%z == 0))
{
imPrime = false;
break;
}
}
if(imPrime && x%i == 0)
cout << i << endl;
imPrime = true;
}
}
int main()
{
long long r = 600851475143LL;
whosprime(r);
}
Estoy tratando de encontrar los factores primos del número 600851475143 especificado porProblema 3 en el Proyecto Euler (pide el factor primo más alto, pero quiero encontrarlos a todos). Sin embargo, cuando intento ejecutar este programa no obtengo ningún resultado. ¿Tiene que ver con cuánto tiempo lleva mi programa para un número tan grande, o incluso con el número mismo?
Además, ¿cuáles son algunos de los métodos más eficientes para resolver este problema? ¿Tiene algún consejo sobre cómo puedo dirigirme hacia estas soluciones más elegantes a medida que soluciono un problema?
Como siempre, gracias!