числа, имеющие ровно два различных натуральных делителя
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.
Например, в диапазоне [5; 9] ровно два целых различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона таблица на экране должна содержать следующие значения:
Демонстрационный вариант ЕГЭ по информатике 2021 г. задания №25
Решение:
|
1 2 3 4 5 6 7 8 9 |
for n in range(174457, 174506): d = 0 dels = [] for i in range(2, n): if n % i == 0: dels.append(i) d = d + 1 if d == 2: print(dels[0], dels[1]) |
ИЛИ (работает быстрее)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for i in range(174457, 174505+1): k = 0 d = 2 a = [] while d * d < i: if i % d == 0: k += 2 a.append(d) a.append(i // d) d += 1 if d*d==i: k+=1 if k == 2: print(*a) |
Ответ:
| 3 | 58153 |
| 7 | 24923 |
| 59 | 2957 |
| 13 | 13421 |
| 149 | 1171 |
| 5 | 34897 |
| 211 | 827 |
| 2 | 87251 |
