Задание 25 (
ссылка на задание)
Пусть M (N) – сумма 2 наибольших различных натуральных делителей натурального числа N, не считая самого числа и единицы.
Если у числа N меньше 2 таких делителей, то M (N) считается равным 0.
Найдите все такие числа N, что 110 250 000 ≤ N ≤ 110 300 000,
а десятичная запись числа M (N) заканчивается на 1002.
В ответе запишите все найденные числа в порядке возрастания.
Каждое число вводите в новой строке.
Задание довольно "хитрое", поскольку требуется найти ДВА делителя.
Вместо максимальных можно искать минимальные и по ним определять максимальные. Это надо сделать для каждого из заданных 50000 чисел
- найдем x - минимальный простой делитель числа (он же мнинимальный); kx - степень его вхождения в разложение числа
- найдем y - минимальный делитель числа n//xkx
- разберем возможные случаи
- kx> 1 минимальные делители выбираем из набора (x,x2,y)
- kx == 1 минимальные делители (x,y)
Для понимания, зачем это нужно, можно взять число 100 - минимальные делители 2 и 2
2 , а простые 2, 5
Код программы мог выглядеть так (в коде учитывается, что простые числа и квадраты простых не подходят)
Главное, организовать поиск делителя до "корня"