Взлом кода: нахождение суммы кратных 3 и 5 ниже 100

Привет, уважаемые любители программирования! Сегодня мы собираемся решить интересную задачу: найти сумму всех кратных 3 и 5 ниже 100. Это может показаться немного устрашающим, но не бойтесь! Мы рассмотрим различные методы решения этой проблемы с помощью Python, и я обязательно объясню каждый подход простыми словами. Итак, приступим!

Метод 1: грубая сила
Наш первый метод предполагает грубую силу. Мы переберем все числа ниже 100 и проверим, делятся ли они на 3 или 5. Если да, мы добавим их к промежуточной сумме.

def sum_of_multiples_brute_force(n):
    total = 0
    for i in range(n):
        if i % 3 == 0 or i % 5 == 0:
            total += i
    return total
result = sum_of_multiples_brute_force(100)
print(result)

Этот метод хорошо работает для меньших чисел, но может быть совершенно неэффективным для больших диапазонов. Итак, давайте рассмотрим некоторые оптимизированные подходы.

Метод 2: математическая формула
Знаете ли вы, что на самом деле существует математическая формула для вычисления суммы кратных? Это называется формулой арифметического ряда. Для нашей задачи мы можем использовать эту формулу, чтобы найти сумму напрямую, без перебора каждого числа.

def sum_of_multiples_formula(n):
    sum_3 = (3 + (n // 3) * 3) * (n // 3) // 2
    sum_5 = (5 + (n // 5) * 5) * (n // 5) // 2
    sum_15 = (15 + (n // 15) * 15) * (n // 15) // 2
    total = sum_3 + sum_5 - sum_15
    return total
result = sum_of_multiples_formula(100)
print(result)

Используя формулу, мы вычисляем сумму кратных 3, 5 и 15 (во избежание двойного счета) по отдельности, а затем объединяем их, чтобы получить окончательный результат.

Метод 3: подход на основе множеств
В этом методе мы используем структуру данных множества Python для эффективного поиска всех кратных и их суммирования.

def sum_of_multiples_set(n):
    multiples = set()
    for i in range(3, n, 3):
        multiples.add(i)
    for i in range(5, n, 5):
        multiples.add(i)
    total = sum(multiples)
    return total
result = sum_of_multiples_set(100)
print(result)

Выполняя итерацию от 3 до n с шагом 3 и 5, мы добавляем в набор все кратные. Наконец, мы вычисляем сумму элементов множества.

Метод 4: Построение списков
Построение списков — это краткий и элегантный способ решения этой проблемы. Мы можем создать список кратных, а затем использовать встроенную функцию sum(), чтобы найти их сумму.

def sum_of_multiples_list_comprehension(n):
    multiples = [i for i in range(n) if i % 3 == 0 or i % 5 == 0]
    total = sum(multiples)
    return total
result = sum_of_multiples_list_comprehension(100)
print(result)

Здесь мы создаем генератор списка, который генерирует список кратных, отфильтровывая числа, делящиеся на 3 или 5. Затем мы находим сумму списка.

В этом сообщении блога мы рассмотрели несколько методов нахождения суммы всех кратных 3 и 5 ниже 100. Мы начали с подхода грубой силы и постепенно перешли к более оптимизированным решениям, включая математическую формулу и подход на основе множеств. и понимание списка. Каждый метод имеет свои преимущества в зависимости от конкретных требований вашего проекта. Итак, вперед и выбирайте тот, который соответствует вашим потребностям!

Помните: понимание и реализация различных алгоритмов необходимы каждому программисту. Это не только помогает в решении проблем, но и улучшает ваши общие навыки программирования. Приятного кодирования!