25.04.2025

25 — 184

# Обозначим через P(N) – произведение 5 наименьших различных нетривиальных делителей
# натурального числа N (не считая единицы и самого числа). Если у числа N меньше 5 таких делителей,
# то P(N) считается равным нулю. Найдите 5 наименьших натуральных чисел, превышающих 300 000 000,
# для которых P(N) оканчивается на 31 и не превышает N. В ответе для каждого найденного числа запишите
# сначала значение P(N), а затем – наибольший делитель, вошедший в произведение P(N).
def p(n):
    s = set()
    k = 0
    for i in range(2, int(n ** 0.5)+1):
        if n % i == 0:
            s.add(i)
            s.add(n // i)
            k += 1
            if k == 5:
                break
    sortedSet = sorted(s)
    if len(sortedSet) >= 5:
        return sortedSet[0] * sortedSet[1] * sortedSet[2] * sortedSet[3] * sortedSet[4], sortedSet[4]
    else: return 0,0
for j in range(300_000_000, 999999999999999999999999999999):
    a = p(j)[0]
    if a % 100 == 31 and a <= j:
        print(a,p(j)[1])