awilum.ru
Статьи Курсы Об авторе

Как найти все делители натурального числа в Python?

В программировании, особенно при работе с числами, часто возникает необходимость найти все делители натурального числа. Делители - это числа, на которые данное число делится нацело.

Использование цикла и условного оператора

Простейший способ найти все делители - это перебор всех чисел от 1 до самого числа и проверка их на делимость.

Вот пример кода:

def find_divisors(n):
    divisors = []
    for i in range(1, n + 1):
        if n % i == 0:
            divisors.append(i)
    return divisors

# Пример использования
number = 36

print("Делители числа", number, ":", find_divisors(number))

# Делители числа 36 : [1, 2, 3, 4, 6, 9, 12, 18, 36]

Оптимизированный подход

Если число n имеет делитель d, то оно также имеет делитель n/d.

Мы можем использовать это свойство для оптимизации нашего алгоритма:

def find_divisors_optimized(n):
    divisors = []
    i = 1
    while i * i <= n:
        if n % i == 0:
            if n // i == i:
                divisors.append(i)
            else:
                divisors.append(i)
                divisors.append(n // i)
        i += 1
    divisors.sort() # Сортировка делителей
    return divisors

# Пример использования
number = 36

print("Делители числа", number, ":", find_divisors_optimized(number))

# Делители числа 36 : [1, 2, 3, 4, 6, 9, 12, 18, 36]

Этот код также выведет все делители числа 36, но делает это более эффективно, используя только один цикл вместо перебора всех чисел до n.

Хотите стать востребованным Python разработчиком?
Присоединяйтесь к курсу Python Тренажер прямо сейчас!
Научитесь решать разнообразные практические задачи по программированию, которые помогут улучшить ваш уровень программирования на Python.
Не упустите шанс стать экспертом в мире разработки – начните свой путь прямо сейчас!
Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!