Сделал 20 задание

This commit is contained in:
parent 2f7eb12bd6
commit 488842ab5a

76
lesson.20.py Normal file
View file

@ -0,0 +1,76 @@
''' ****** Задание 20 из 20 *********
* Напомним, что взаимно простыми называются числа, которые не имеют общих делителей, кроме 1.
Напишите программу, которая:
получает список чисел, разделённых точкой с запятой и пробелом;
для каждого числа определяет, с какими другими числами оно взаимно просто;
выводит результат в порядке возрастания чисел без повторений;
если для числа не найдено ни одного взаимно простого числа — его не нужно выводить вовсе.
Формат ввода
Задана последовательность чисел записанных через точку с запятой (;) и пробел.
Формат вывода
Список чисел с указанием взаимно простых ему среди переданных.
Все числа должны быть выведены в порядке возрастания без повторений.
Строки следует отформатировать по правилу:
число - взаимно простое 1, взаимно простое 2, ...
Если для числа не было найдено ни одного взаимно простого, то и выводить его не требуется.
Подсказка
Рассмотрите все возможные пары чисел.
Если два числа a и b являются взаимно простыми, то по ключу a в список добавьте b и наоборот.
Пример 1
Ввод
2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20
Вывод
2 - 3, 5, 7, 9, 11, 13, 15, 17, 19
3 - 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20
4 - 3, 5, 7, 9, 11, 13, 15, 17, 19
5 - 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19
6 - 5, 7, 11, 13, 17, 19
7 - 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20
8 - 3, 5, 7, 9, 11, 13, 15, 17, 19
9 - 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20
10 - 3, 7, 9, 11, 13, 17, 19
11 - 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20
12 - 5, 7, 11, 13, 17, 19
13 - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20
14 - 3, 5, 9, 11, 13, 15, 17, 19
15 - 2, 4, 7, 8, 11, 13, 14, 16, 17, 19
16 - 3, 5, 7, 9, 11, 13, 15, 17, 19
17 - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20
18 - 5, 7, 11, 13, 17, 19
19 - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20
20 - 3, 7, 9, 11, 13, 17, 19
'''
if __name__ == "__main__":
data = sorted(map(int, input().split('; ')))
result = dict.fromkeys(data)
for i in data:
for j in data:
a, b = i, j
while b:
a, b = b, a % b
if a == 1:
if result[i]:
result[i].add(j)
else:
result[i] = {j}
for number in result:
if result[number]:
print(f'{number} - {", ".join(map(str, sorted(result[number])))}')