Как среди чисел, данных в блокноте, найти, те у которых определенное количество делителей(в Python)
например: даны числа и среди них нужно найти те у которых 12 делителей
По дате
По рейтингу
Должен сказать, что оба приведённых выше алгоритма являются хорошей иллюстрацией поговорки: "не умеешь - не берись".
123456789101112131415
def divcount(n):
factors = {1}
p, inc = 2, 1
while p * p <= n:
while n % p == 0:
factors.update([f * p for f in factors])
n //= p
p, inc = p + inc, 2
if n > 1:
factors.update([f * n for f in factors])
return len(factors)
dc = int(input())
ns = (int(s) for s in input().split())
print(*(n for n in ns if divcount(n) == dc))
123456789101112
n = int(input('n: '))
num_divisors = 12 # заданное количество делителей
# создаем список чисел от 1 до n
numbers = list(range(1, n+1))
# ищем числа с num_divisors делителями
result = [num for num in numbers if sum(num % i == 0 for i in range(1, num+1)) == num_divisors]
# выводим результат
print(f"Числа с {num_divisors} делителями: {result}")