Эффективные способы найти сумму кратных 3 или 5 ниже 1000 в Python

Нахождение суммы кратных определенных чисел в заданном диапазоне — распространенная задача программирования. В этой статье мы рассмотрим несколько методов эффективного вычисления суммы всех кратных 3 или 5 ниже 1000 с использованием Python. Мы предоставим примеры кода для каждого метода, что позволит вам выбрать тот, который лучше всего соответствует вашим потребностям.

Метод 1: наивный подход
Самый простой подход — перебрать числа от 1 до 999 и проверить, кратно ли каждое число 3 или 5. Если да, мы добавляем его к сумме.

def sum_multiples_naive():
    total = 0
    for num in range(1, 1000):
        if num % 3 == 0 or num % 5 == 0:
            total += num
    return total
result = sum_multiples_naive()
print(result)

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

def sum_multiples_list_comprehension():
    multiples = [num for num in range(1, 1000) if num % 3 == 0 or num % 5 == 0]
    total = sum(multiples)
    return total
result = sum_multiples_list_comprehension()
print(result)

Метод 3: математическая формула
Мы можем использовать математическую формулу для вычисления суммы кратных без перебора каждого числа. Формула гласит, что сумма кратных числа до заданного предела равна количеству кратных, умноженному на их среднее значение.

def sum_multiples_formula():
    def sum_divisible_by(num, limit):
        p = (limit - 1) // num
        return num * (p * (p + 1)) // 2
    total = sum_divisible_by(3, 1000) + sum_divisible_by(5, 1000) - sum_divisible_by(15, 1000)
    return total
result = sum_multiples_formula()
print(result)

Метод 4: Объединение множеств
Используя наборы, мы можем создать два набора: один, содержащий кратные 3, а другой содержащий кратные 5. Объединяя эти наборы, мы устраняем дубликаты и вычисляем сумму.

def sum_multiples_set_union():
    multiples_3 = set(range(3, 1000, 3))
    multiples_5 = set(range(5, 1000, 5))
    multiples = multiples_3.union(multiples_5)
    total = sum(multiples)
    return total
result = sum_multiples_set_union()
print(result)

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