Я пытаюсь работать через Project Euler, и я нахожу барьер на проблеме 03. У меня есть алгоритм, который работает для меньших чисел, но проблема 3 использует очень и очень большое число.Project Euler Question 3 Help
Задача 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