Сделал 20 задание
This commit is contained in:
parent
2f7eb12bd6
commit
488842ab5a
76
lesson.20.py
Normal file
76
lesson.20.py
Normal 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])))}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in a new issue