Skip to content

Instantly share code, notes, and snippets.

@superkiria
Created November 4, 2018 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save superkiria/1c4d1743272d2b0ff9053652f6334a38 to your computer and use it in GitHub Desktop.
Save superkiria/1c4d1743272d2b0ff9053652f6334a38 to your computer and use it in GitHub Desktop.
# будем делить заданное число на числа меньше 10, то есть цифры
# если будет получаться деление, то записываем делитель в ответ и продолжаем ту же работу с частным
def task_1(n):
if n < 1: # исключаем ненатуральные числа по условию
return -1
if n < 10: # если на входе одна цифра, то она и есть ответ
return n
result = '' # здесь будем накапливать ответ в строке, потом переведём в число
fl = False # поднимем этот флаг, если упрёмся в простое число больше 10
while n > 1 and not fl: # пока не дошли до 1 и не упёрлись в простое число больше 10
fl = False
for i in range(9, 1 ,-1): # пробуем делить на 9, 8, 7 ...
if n % i == 0:
n = n / i # если получилось, то дальше продолжим с частным
result = str(i) + result # если получилось, то записываем цифру в результат
break # сразу выходим из цикла, начинаем новый
if i == 2:
fl = True # если дошли до двух и поделить не получилось, то упёрлись в простое число
if fl:
return -1 # если упёрлись в простое, то ответ -1
return int(result)
test_set = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 33, 34, 100, 168, 216, 324, 330, 432, 648, 1000, 2520, 4212, 7350, 21600, 30240, 1000000, 10**9)
for i in test_set:
print('Metod 1: N =', i, ' - Answer =', task_1(i))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment