Encontrar fatores 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);
}
Estou tentando encontrar os fatores primos do número 600851475143 especificado porProblema 3 no Project Euler (ele pede o maior fator primo, mas eu quero encontrar todos eles). No entanto, quando tento executar este programa, não obtenho nenhum resultado. Tem a ver com quanto tempo meu programa está levando para um número tão grande, ou mesmo com o próprio número?
Além disso, quais são alguns métodos mais eficientes para resolver esse problema, e você tem alguma dica de como eu posso direcionar para essas soluções mais elegantes, já que estou resolvendo um problema?
Como sempre, obrigada!