Нахождение основных факторов
#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);
}
Я пытаюсь найти основные факторы числа 600851475143, указанногоПроблема 3 на Project Euler (он требует наивысшего простого множителя, но я хочу найти их все). Однако, когда я пытаюсь запустить эту программу, я не получаю никаких результатов. Связано ли это с тем, сколько времени занимает моя программа для такого большого числа, или даже с самим номером?
Кроме того, каковы некоторые более эффективные методы решения этой проблемы, и есть ли у вас какие-либо советы относительно того, как я могу ориентироваться на эти более элегантные решения, когда решаю проблему?
Как всегда, спасибо!