Znajdowanie czynników pierwszych
#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);
}
Próbuję znaleźć czynniki pierwsze o numerze 600851475143 określonym przezProblem 3 na Project Euler (prosi o najwyższy czynnik główny, ale chcę znaleźć je wszystkie). Jednak gdy próbuję uruchomić ten program, nie otrzymuję żadnych wyników. Czy ma to związek z tym, jak długo mój program zajmuje tak dużą liczbę, a nawet z samą liczbą?
Ponadto, jakie są bardziej skuteczne metody rozwiązania tego problemu i czy masz jakieś wskazówki, w jaki sposób mogę kierować się w stronę tych bardziej eleganckich rozwiązań, gdy pracuję nad problemem?
Jak zawsze dziękuję!