Нахождение простых множителей

#include 
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);  
}

Я пытаюсь найти простые множители числа 600851475143, указанные в Задаче 3 в проекте Эйлера (, он запрашивает самый высокий простой множитель, но я хочу найти их все ). Однако, когда я пытаюсь запустить эту программу, я не получаю никаких результатов. Связано ли это с тем, как долго моя программа обрабатывает такое большое число, или даже с самим числом?

Кроме того, каковы некоторые более эффективные методы решения этой проблемы, и есть ли у вас какие-либо советы относительно того, как я могу использовать эти более элегантные решения, когда я решаю проблему?

Как всегда, спасибо!

5
задан Will Ness 3 February 2015 в 13:34
поделиться