№25

Примеры решений прототипа №1

Маски и делители

ПРИМЕРЫ РЕШЕНИЙ

№ 22 Демоверсия 2021 (Уровень: Базовый)

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных 

натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания. 

def divs(n):
    r = set()
    for d in range(2, int(n ** 0.5) + 1):
        if n % d == 0:
            r.add(d)
            r.add(n // d)
    return sorted(r)
for n in range(174_457, 174505 + 1):
    ds = divs(n)
    if len(ds) == 2: print(*ds)

 

№ 2590 (Уровень: Базовый)

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [6080068; 6080176], простые числа. Выведите все найденные простые числа в порядке возрастания.

def is_prime(num):
    for d in range(2, int(num ** 0.5) + 1):
        if num % d == 0:
            return False
    return True
for n in range(6080068, 6080176 + 1):
    if is_prime(n): print(n)

 

Рекурсивная функция разложения на простые множители

def fact(n, p=2):
    for i in range(p, int(n**0.5) + 1):
        if n % i == 0: 
            return [i] + fact(n // i, i)
    return [n]

№ 23425

Напишите программу, которая перебирает целые числа, большие 15 381 264, в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно трёх простых множителей, не обязательно различных, каждый из которых содержит в своей записи ровно одну цифру 1.
В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце - для каждого из чисел соответствующий им наибольший из найденных множителей.
Количество строк в таблице для ответа избыточно.

def divs(num, p=2):
    for d in range(p, int(num ** .5) + 1):
        if num % d == 0:
            return [d] + divs(num // d, d)
    return [num]

for n in range(15_381_265, 15_384_000):
    prime_ds = divs(n)
    if len(prime_ds) == 3 and all(str(x).count('1') == 1 for x in prime_ds):
        print(n, max(prime_ds))

← К списку шпаргалок