25.02 Поиск делителей
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Найдите наименьшее натуральное число, которое имеет ровно 20 делителей. В ответе укажите число.
def f(n): count = 0 for i in range(1, int(n ** 0.5) + 1): if n % i == 0: count += 1 if n // i != i: count += 1 if count == 20: return True return False i = 0 while not(f(i)): i += 1 print(i)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая принимает одно натуральное число и выводит количество его различных делителей.
n = int(input()) res = 0 for i in range(1, int((n)**0.5) + 1): if (n % i == 0): res += 1 if (n // i != i): res += 1 print(res)
Ошибка.
Попробуйте повторить позже
Найти количество натуральных делителей у числа 55440.
k = 2 # 1 и само число - делители числа всегда
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
k += 1
if n // i != i:
k += 1
return k
print(count_div(55440))
Ошибка.
Попробуйте повторить позже
Вывести в порядке возрастания все нетривиальные делители числа 49500.
a = []
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
a.append(i)
if n // i != i:
a.append(n// i)
a.sort()
return a
Ошибка.
Попробуйте повторить позже
Утверждается, что количество делителей числа четно. Найдите количество пар делителей числа
,
произведение которых равно исходному числу. При этом пары делителей выбираются следующим образом минимальный
делитель * максимальный делитель, предминимальный делитель * предмаксимальный делитель и т.д. В ответе укажите
два числа через пробел: сначала количество рассматриваемых пар, затем количеством пар, произведение которых равно
исходному числу.
a = [] x = 2052336 for i in range(1, x + 1): if x % i == 0: a.append(i) count = 0 n = len(a) for i in range(n // 2): if a[i] * a[n - i - 1] == x: count += 1 print(n // 2, count)
Ошибка.
Попробуйте повторить позже
Для найдите разность между количеством делителей числа
, которые больше квадратного корня из
и
количеством делителей числа
, которые меньше квадратного корня из
. В ответе укажите искомую
разность.
Обратим внимание, что если - делитель числа
, то и
- делитель числа
. Очевидно, эти два числа находятся
по разную сторону от
(иначе, предположим, что они оба меньше, тогда
чего явно не
может быть, случай, когда оба больше - аналогичен). Таким образом, мы видим, что все делители разбиваются на пары, в
которых один делитель меньше корня, а другой - больше. Отсюда понимаем, что делителей, меньших корня столько же,
сколько и больших.
print(0)
А теперь представим, что мы не знаем математику, и попробуем решить это другим способом:
x = 3052336 sq = x ** 0.5 more = 0 less = 0 for i in range(1, x + 1): if x % i == 0: if i > sq: more += 1 if i < sq: less += 1 print(more - less)
Ошибка.
Попробуйте повторить позже
Дано число и массив с числами
. Назовем «подходящими» элементы массива, которые
являются делителями числа
. Найдите сумму чисел, которые в паре с «подходящими» элементами массива дают
произведение равное
.
a = [1, 2, 98, 43, 89, 739] x = 1052336 summa = 0 for i in a: if x % i == 0: summa += x // i print(summa)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая получает на вход число и возвращает количество его делителей. В ответе укажите
количество делителей для числа .
Решение 1
count = 0 x = int(input()) for i in range(1, int(x ** 0.5) + 1): if x % i == 0: count += 1 if x // i != i: count += 1 print(count)
Решение 2
a = set() x = int(input()) for i in range(1, int(x ** 0.5) + 1): if x % i == 0: a.add(i) a.add(x // i) print(len(a))