Задание 5. Информатика. ЕГЭ. Поляков-7766

Просмотры: 116
Изменено: 21 февраля 2025

(О. Лысенков) На вход алгоритма подается целое неотрицательное число \(N.\) Алгоритм строит по нему новое число \(R\) по следующим образом:

  1. Число \(N\) переводится в систему счисления с основанием \(30.\)
  2. Вычисляет сумма значений цифр данного числа в \(30\)-ричной системе счисления.
  3. Число \(R\) определяется как полученная сумма, умноженная на значение последней десятичной цифры числа \(N.\)

Найдите количество чисел \(N,\) меньших \(10^7,\) для которых соответствующее значение \(R\) — не простое число.

Решение:

Если число \(N\) в десятичной записи не заканчивается на \(1,\) то \(R(N)\) — число не простое (составное). Поэтому, чтобы ответить на поставленный в задаче вопрос, нужно от общего количества целых неотрицательных чисел, не превышающих \(10^7,\) которых ровно \(10^7,\) отнять количество таких \(N,\) которые оканчиваются на \(1\) и для которых \(R(N)\) — простое число.

Python


def is_prime(x):
    if x in (0, 1):
        return False
    if x in (2, 3):
        return True
    for d in range(2, int(x**0.5) + 1):
        if x % d == 0:
            return False
    return True

def R(N):
    if N == 0:
        return 0
    alph = '0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ'
    ans = ''
    last_dig = N % 10
    while N:
        ans = alph[N % 30] + ans
        N //= 30
    return sum(int(x, 30) for x in ans) * last_dig

print(10**7 - sum(is_prime(R(x)) for x in range(1, 10**7, 10)))

Ответ: \(9771349\)