Решения на Python, JavaScript/TypeScript, Java и C
Project Euler — это серия сложных задач по математике/компьютерному программированию, для решения которых потребуется нечто большее, чем просто математическое понимание. Хотя математика поможет вам найти элегантные и эффективные методы, для решения большинства задач потребуется использование компьютера и навыки программирования.
Мотивация для запуска Project Euler и его продолжения заключается в том, чтобы предоставить пытливому уму платформу для погружения в незнакомые области и изучения новых концепций в веселой и развлекательной обстановке.
⚠️ Осторожно, спойлер: В этой статье будет раскрыто решение задачи Project Euler. Не продолжайте чтение, если вы хотите решить эту проблему в одиночку. Продолжайте чтение только в том случае, если вы не знаете, почему ваш ответ не работает, или если вы мошенник.
описание проблемы
Каждый новый член последовательности Фибоначчи создается путем добавления двух предыдущих членов. Начиная с 1 и 2, первые 10 членов будут:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Рассмотрев члены последовательности Фибоначчи, значения которых не превышают четырех миллионов, найдите сумму членов с четными значениями.
🔗 Просмотреть задачу по проекту Эйлера
Алгоритм
Этот алгоритм требует знания вычисления последовательности Фибоначчи, проверки четности числа и накопления.
У нас будет две переменные: prev
и curr
. Мы инициализируем prev
с помощью 0
и curr
с 1
. Несмотря на то, что последовательность Фибоначчи начинается с 1 1 2 3...
, эта проблема ясно указывает, что мы должны игнорировать первые 1
.
Мы будем использовать цикл while
. Цикл будет продолжаться, пока curr < cap
, где cap = 4e6
(4 миллиона).
Каждый цикл будет вычислять следующее значение в последовательности. Значение curr
будет присвоено prev,
, а следующее значение будет присвоено curr
. Если curr
четное, добавляем его в аккумулятор (total
).
Psuedocode cap := 4,000,000 prev := 0 curr := 1 total := 0 while curr < cap: next := prev + curr prev := curr curr := next if curr is even: total := total + curr
Решения
В Питоне
Solution: 4613732 Runtime: 59 milliseconds
🙋♂️ Что такое строка 9? Это простой способ одновременного назначения нескольких переменных. Обычно вы можете использовать его для замены переменных с помощью x, y = y, x
. В данном случае я использую его для назначения prev
curr
и curr
curr + prev
. Поскольку сначала оценивается правая часть оператора присваивания, curr
и prev
сохранят свои значения во время вычисления, а затем будут присвоены правильной переменной.
В JavaScript/TypeScript
Solution: 4613732 Runtime: 79 milliseconds
В Яве
Solution: 4613732 Runtime: 85 milliseconds
In C
Solution: 4613732 Runtime: 8 milliseconds
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.