Использование функций при нахождении делителей
Есть задание по Питону: Напишите функцию, которая принимает целое число (предварительно полученное от пользователя) и выводит на экран значения его делителей до 10. Например, для 6 будет вывод: 2, 3, 6; а для 20 будет вывод: 2, 4, 5, 10.
Формат вывода: "is divisible by: n", где n -- соответствующий делитель. Выводите каждый делитель в отдельной строке.
Сделать это нужно без цикла, использования массивов, словарей, списков. Это реально? Никакой код я не написала, так как не представляю как это реализовать. Заранее благодарю за подсказки.
Ответы (3 шт):
def f(n,count=2):
if n==count:
return None
else:
if n%count == 0:
print(f'{n} is divisible by: {count}')
return f(n,count+1)
f(int(input('Введите целое число ')))
По предложению @CrazyElf, можно рассмотреть еще один вариант:
n = int(input())
print(*filter(lambda x: x if n % x == 0 else None, range(2, n)),sep='\n')
Вот такой вариант работает так, как от меня просят:
num = int(input())
def div(num, count=2):
if num + 1 == count:
return count
else:
if count > 10:
return
if num % count == 0:
print("is divisible by:", count)
return div(num, count + 1)
div(num)
Вывод:
is divisible by: 2
is divisible by: 4
is divisible by: 5
is divisible by: 10
Всем спасибо за подсказки!
А зачем тут вообще циклы? можно просто прописать все числа до 10 в коде (если я, конечно, правильно понял задачу):
def f(n):
if n % 2 == 0:
print(...)
if n % 3 == 0:
print(...)
# И так далее до 10