Я новичок в программировании, и мой друг предложил мне сделать упражнение по проекту Эйлера, чтобы поправиться. Я столкнулся с проблемой по вопросу 3:Каков наилучший способ найти самый большой простой коэффициент числа?
«Главными факторами 13195 являются 5, 7, 13 и 29. Какой самый большой простой коэффициент числа 600851475143?»
Теперь вот мое решение:
class Program
{
static void Main(string[] args)
{
long number = 600851475143;
bool prime = true;
for (long i = 3; i <= number; i++)
{
for (long n = 2; n < i; n++)
{
if (i % n == 0)
{
prime = false;
break;
}
}
if (prime)
{
if (number % i == 0)
{
Console.WriteLine(i);
}
}
prime = true;
}
Console.ReadKey();
}
}
Теперь, когда я сделал получить правильный ответ (который 6857) Ive нашел мой метод очень неэффективен. Если вы запустите мой код, вы увидите, что он все равно будет работать после более чем двух минут ... Мой вопрос в том, как я могу написать более эффективный/быстрый код для этого?
Во-первых, вы можете резко сократить пространство поиска, поскольку простой коэффициент любого целого всегда меньше или равен «sqrt (n)». Где 'n' - номер, который вы пытаетесь вычислить – stackErr
Возможный дубликат [Project Euler Question 3 Help] (http://stackoverflow.com/questions/201374/project-euler-question-3-help) –
Похоже на вас должен опубликовать вопрос [здесь] (http://codereview.stackexchange.com/) – Eser