Что такое проект Эйлер?
Проект Эйлера - это серия сложных задач математического/компьютерного программирования, для решения которых потребуется нечто большее, чем просто математическое понимание. Хотя математика поможет вам найти элегантные и эффективные методы, для решения большинства проблем потребуется использование компьютера и навыки программирования.
Мотивация для запуска проекта Эйлера и его продолжения состоит в том, чтобы предоставить платформу для пытливого ума, чтобы погрузиться в незнакомые области и изучить новые концепции в веселом и развлекательном контексте.
На кого направлены эти проблемы?
Предполагаемая аудитория включает студентов, для которых базовая учебная программа не утоляет их жажду учиться, взрослых, чье образование не было связано в первую очередь с математикой, но интересовалось математикой, и профессионалов, которые хотят, чтобы их решение задач и математика были на переднем крае.
В настоящее время у нас зарегистрировано 1036839 участников, которые решили по крайней мере одну проблему, представляющих 220 мест по всему миру и в совокупности использующих 108 различных языков программирования для решения проблем.
Может ли кто-нибудь решить эти проблемы?
Проблемы варьируются по сложности, и для многих опыт является индуктивным цепным обучением. То есть, решив одну проблему, вы познакомитесь с новой концепцией, которая позволит вам решить ранее недоступную проблему. Таким образом, решительный участник будет медленно, но верно прокладывать свой путь через каждую проблему.
Задание 1 (1)
Числа, кратные 3 или 5
Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.
Решение:
def compute():
ans = sum(x for x in range(1000) if (x % 3 == 0 or x % 5 == 0))
return str(ans)
if __name__ == «__main__»:
print(compute())
Ответ: 233168
Задание 2 (2)
Четные числа Фибоначчи
Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 10 элементов будут:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.
Решение:
f1, f2, s = 0, 1, 0
while f2 <= 4000000:
s = s + f2 if f2 % 2 == 0 else s
f1, f2 = f2, f1 + f2
print(s)
Ответ: 4613732
Задание 3 (4)
Наибольшее произведение-палиндром
Число-палиндром с обеих сторон (справа налево и слева направо) читается одинаково. Самое большое число-палиндром, полученное умножением двух двузначных чисел – 9009 = 91 × 99.
Найдите самый большой палиндром, полученный умножением двух трехзначных чисел.
Решение:
def compute():
ans = max(i * j
for i in range(100, 1000)
for j in range(100, 1000)
if str(i * j) == str(i * j)[ : : -1])
return str(ans)
if __name__ == «__main__»:
print(compute())
Ответ: 906609