我正在尝试通过 Project Euler 工作,但在问题 03 上遇到了障碍。我有一个适用于较小数字的算法,但问题 3 使用了一个非常非常大的数字。
问题03: 13195的质因数是5、7、13和29。600851475143这个数的最大质因数是多少?
这是我在 C# 中的解决方案,我认为它已经运行了将近一个小时。我不是在寻找答案,因为我确实想自己解决这个问题。主要是寻求帮助。
    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();
    }