Задача №25. ЕГЭ по инфе. Решение дайте, пожалуйста, на Python.
Напишите программу, которая перебирает целые числа, большие 550 000, в порядке возрастания и ищет среди них такие, для которых наибольший натуральный делитель, не равный самому числу, не является простым числом. Программа должна найти и вывести первые таких чисел и соответствующие им значения упомянутых делителей.
Формат вывода: для каждого из 6 таких найденных чисел в отдельной строке сначала выводится само число, затем упомянутый делитель. Строки выводятся в порядке возрастания найденных чисел.
Например, для числа 105 наибольший натуральный делитель 35 не является простым, для числа 15 наибольший натуральный делитель 5 — простое число, а для числа 13 такого делителя не существует.
По дате
По Рейтингу
Здравствуйте, Мария.
Вот программа для Вас:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
# Задаю самое первое число для анализа
i = 550000
# Задаю начальное значение для количества
# найденных чисел
count = 0
# Запускаю цикл, который работает, пока я не найду
# 6 нужных чисел
while count < 6:
#############################################
# Ищу наибольший делитель
# В d я хочу получить наибольший делитель
d = 0
for k in range(2, i//2 + 1):
# Если число i делится без остатка на k,
# тогда это - нужный мне делитель
if i % k == 0:
# Запоминаю нужный мне делитель
d = k
# Нашёл наибольший мне делитель. Он - в
# переменной d
#############################################
# Если нашёл наибольший делитель, тогда
if d != 0:
##########################################
# Проверяю, что у числа d нету делителей
# В is_ok храню признак, что число d мне
# подходит
is_ok = True
for k in range(2, d//2 + 1):
# Если число из d делится без остатка
# на k, тогда
if d % k == 0:
# ...устанавливаю признак, что мне
# это число не подходит. То есть я
# узнал, что число d не простое.
is_ok = False
# Выхожу из цикла
break
#
##########################################
# Если число d - простое, то...
if is_ok:
# Вывожу на экран i и d
print(i, d)
# Увеличиваю количество найденных чисел
count += 1
# Перехожу к следующему числу
i += 1
Больше по теме