Python. Задача 8-31
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.
Например, в диапазоне [5; 9] ровно два целых различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона таблица на экране должна содержать следующие значения:
2 | 3 |
2 | 4 |
Ответ
3 | 58153 |
7 | 24923 |
59 | 2957 |
13 | 13421 |
149 | 1171 |
5 | 34897 |
211 | 827 |
2 | 87251 |
Решение
# Список множителей
d = [0, 0]
for i in range(174457, 174506):
# Счетчик множителей
cnt = 0
# Перебираем возможные множители
for j in range(2, i):
if i % j == 0:
cnt += 1
if cnt > 2:
# дальнейшая проверка не нужна
break
d[cnt - 1] = j
else:
if cnt == 2:
print('%8d' % d[0], '%8d' % d[1])