#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);
}
プロジェクトオイラーの問題3で指定された番号600851475143の素因数を見つけようとしています (最高の素因数を要求しますが、すべてを見つけたいと思います)。ただし、このプログラムを実行しようとすると、結果が得られません。それは私のプログラムがそのような大きな数にかかる時間と関係がありますか、それとも数自体と関係がありますか?
また、この問題を解決するためのより効率的な方法は何ですか。また、問題を解決しているときに、これらのより洗練されたソリューションに向けてどのように舵を切ることができるかについてのヒントはありますか?
いつものように、ありがとう!