Решения на 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 и присоединитесь к нашему Коллективу талантов.