Задание 5. Информатика. ЕГЭ. Поляков-7766
- Просмотры: 116
- Изменено: 21 февраля 2025
(О. Лысенков) На вход алгоритма подается целое неотрицательное число \(N.\) Алгоритм строит по нему новое число \(R\) по следующим образом:
- Число \(N\) переводится в систему счисления с основанием \(30.\)
- Вычисляет сумма значений цифр данного числа в \(30\)-ричной системе счисления.
- Число \(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\)