我想通過項目歐拉工作,我打了問題03的障礙。我有一個算法適用於較小的數字,但問題3使用非常非常大的數字。項目歐拉問題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();
}
如果你有興趣,我解決了這個使用Erasthosenes的篩和簡單GetPrimeFactors方法 - http://www.geekality.net/2009/09/17/project-euler-problem-3/ – Svish 2010-06-09 09:10:55