пожалуйста, на питоне, с ответом и кодом
Дан числовой отрезок натуральных чисел: [85, 158]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно четыре делителя, не считая единицы и самого числа.
Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:
10 5
21 7
В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.
Ответы
Программа:
#! /usr/bin/env python3
#! encoding: utf-8
for i in range(85, 159):
m = [x for x in range(2,i) if i%x==0 ]
if len(m) == 4:
print( i, max(m) )
Объяснение:
Первая строка программы - заголовок цикла, для перебора всех чисел, начиная с 85, и заканчивая числом 158. Эти числа перебираются в переменной i
Во второй строке использован генератор списка с условием: в список входят все числа x, начиная от 2 до числа i, определенного циклом, если i делится на x без остатка, т.е. если х - делитель числа i.
В третьей строке проверяется длина списка. Если там 4 элемента, то
четвертая строка: на экран выводится число i и максимальный делитель из найденных четырех.
Если в списке не 4 делителя, то цикл продолжается, берется следующее число из промежутка (85, 158).
Результат выполнения программы на скриншоте.