私は Project Euler を実行しようとしていますが、問題 03 で障害にぶつかっています。より小さい数で機能するアルゴリズムがありますが、問題 3 では非常に大きな数が使用されています。
問題 03: 13195 の素因数は 5、7、13、29 です。600851475143 の最大の素因数はいくつですか?
これがC#での私のソリューションであり、1時間近く実行されていると思います。私は実際にこれを自分で解決したいので、答えを探しているわけではありません。主に助けを求めているだけです。
static void Main(string[] args) {
const long n = 600851475143;
//const long n = 13195;
long count, half, largestPrime = 0;
bool IsAPrime;
half = n / 2;
for (long i = half; i > 1 && largestPrime == 0; i--) {
if (n % i == 0) { // these are factors of n
count = 1;
IsAPrime = true;
while (++count < i && IsAPrime) {
if (i % count == 0) { // does a factor of n have a factor? (not prime)
IsAPrime = false;
}
}
if (IsAPrime) {
largestPrime = i;
}
}
}
Console.WriteLine("The largest prime factor is " + largestPrime.ToString() + ".");
Console.ReadLine();
}