Top.Mail.Ru
Ответы

Как среди чисел, данных в блокноте, найти, те у которых определенное количество делителей(в 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}")