Вы находитесь на странице: 1из 2

21.03.

2023
Отчёт о практической работе, Информатика, 10 класс
Детков Андрей класс 10б
Практическая работа № 38
Тема: Рекурсия
Задача Программа Что получилось
Уровень A. Напишите def mmm(a, b):
рекурсивную функцию, while a!=0 and b!=0:
которая вычисляет НОД двух if a > b:
натуральных чисел, ис- a=a%b
пользуя модифицированный else:
алгоритм Евклида. b=b%a
Пример: return (a + b)
Введите два натуральных print ("Введите два натуральных числа:")
числа: a, b = map(int, input().split())
7006652 112307574 print ("НОД(", a, ",", b, ") = ", mmm(a, b), sep = "")
НОД(7006652,112307574) =
1234
Уровень B. Напишите def mmm(a, k = 2, j = ""):
рекурсивную функцию, if a == 1:
которая раскладывает число return j
на простые сомножители. if a % k == 0:
Пример: return mmm(a // k, k, j + str(k)+'*')
Введите натуральное число: else:
378 return mmm(a, k + 1, j)
378 = 2*3*3*3*7 print ("Введите натуральное число:")
a = int(input())
print(f'{a} = {mmm(a)[:-1]}')
Уровень C. Дано натуральное
число N. Требуется получить
и вывести на экран все
1 http://kpolyakov.spb.ru
21.03.2023
Отчёт о практической работе, Информатика, 10 класс
Детков Андрей класс 10б
возможные раз-личные
способы представления этого
числа в виде суммы
натуральных чисел (то есть, 1
+ 2 и 2 + 1 – это один и тот же
способ разложения числа 3).
Решите задачу с помощью
рекурсивной процедуры.
Пример:
Введите натуральное число:
4
1+1+1+1
1+1+2
1+3
2+2

2 http://kpolyakov.spb.ru

Вам также может понравиться