Привет, уважаемые любители программирования! Сегодня мы собираемся погрузиться в захватывающий мир проекта Эйлера и решить задачу № 1: кратные 3 или 5. Эта задача требует от нас найти сумму всех кратных 3 или 5 ниже заданного числа. Давайте засучим рукава, возьмем наш любимый язык программирования (я буду использовать Python) и изучим различные подходы к решению этой головоломки!
Метод 1: перебор
Метод перебора — это самый простой подход, при котором мы перебираем каждое число ниже заданного предела и проверяем, делится ли оно на 3 или 5. Если да, мы добавляем его к текущему числу. сумма. Вот код:
def sum_multiples_brute_force(limit):
result = 0
for num in range(limit):
if num % 3 == 0 or num % 5 == 0:
result += num
return result
# Example usage
limit = 1000
sum_of_multiples = sum_multiples_brute_force(limit)
print("Sum of multiples of 3 or 5 below", limit, ":", sum_of_multiples)
Метод 2: математическая формула
Мы можем оптимизировать наше решение, используя математическую формулу для вычисления суммы кратных. Используя формулу суммы арифметического ряда, мы можем избежать повторения каждого числа. Вот код:
def sum_multiples_formula(limit):
limit -= 1
sum_3 = (3 * (limit // 3) * ((limit // 3) + 1)) // 2
sum_5 = (5 * (limit // 5) * ((limit // 5) + 1)) // 2
sum_15 = (15 * (limit // 15) * ((limit // 15) + 1)) // 2
return sum_3 + sum_5 - sum_15
# Example usage
limit = 1000
sum_of_multiples = sum_multiples_formula(limit)
print("Sum of multiples of 3 or 5 below", limit, ":", sum_of_multiples)
Метод 3: подход с использованием множеств
Еще один умный способ решить эту проблему — использование множеств. Мы можем генерировать наборы, кратные 3 и 5, а затем объединять их, чтобы найти сумму. Вот код:
def sum_multiples_sets(limit):
multiples_3 = set(range(0, limit, 3))
multiples_5 = set(range(0, limit, 5))
multiples = multiples_3.union(multiples_5)
return sum(multiples)
# Example usage
limit = 1000
sum_of_multiples = sum_multiples_sets(limit)
print("Sum of multiples of 3 or 5 below", limit, ":", sum_of_multiples)
Метод 4: понимание списка
Для тех, кто любит лаконичные и элегантные решения, на помощь приходит понимание списка! Мы можем использовать одну строку кода, чтобы создать список кратных и суммировать их. Вот код:
def sum_multiples_list_comprehension(limit):
multiples = [num for num in range(limit) if num % 3 == 0 or num % 5 == 0]
return sum(multiples)
# Example usage
limit = 1000
sum_of_multiples = sum_multiples_list_comprehension(limit)
print("Sum of multiples of 3 or 5 below", limit, ":", sum_of_multiples)
Поздравляем! Теперь вы узнали несколько способов решения задачи № 1 проекта Эйлера: кратность 3 или 5. Мы изучили грубую силу, математические формулы, операции над множествами и элегантность понимания списков. Не стесняйтесь экспериментировать с этими методами, оптимизировать их или исследовать дополнительные творческие подходы. Приятного вам программирования и продолжайте решать захватывающие задачи, такие как Project Euler!