В программировании, особенно при работе с числами, часто возникает необходимость найти все делители натурального числа. Делители - это числа, на которые данное число делится нацело.
Простейший способ найти все делители - это перебор всех чисел от 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
.