Задача к ЕГЭ по информатике на тему «одна функция» №22

Алгоритм вычисления значения функции F(n)  , где n  – целое неотрицательное число, задан следующими соотношениями:

F (n) = 1  при n ≤ 1

F (n) = F(n − 1) +F (n− 2)+ n  если 1 » class=»math» width=»auto»> и n  кратно 3

F (n) = F(n − 2) +2  в остальных случаях

Сколько существует значений n на отрезке [1, 1500], для которых сумма цифр значения функции F(n) является простым числом?

from functools import lru_cache
 

 

 
@lru_cache(None)
 
def f(n):
 
    if n <= 1:
 
        return 1
 
    elif n > 1 and n % 3 == 0:
 
        return f(n — 1) + f(n — 2) + n
 
    else:
 
        return f(n — 2) + 2
 

 

 
def summa(n):
 
    s = n
 
    ans = 0
 
    while s > 0:
 
        ans += (s % 10)
 
        s //= 10
 
    return ans
 

 

 
def is_prime(n):
 
    if n < 2: return False
 
    for j in range(2, int(n ** 0.5) + 1):
 
        if n % j == 0:
 
            return False
 
    return True
 

 

 
ans = 0
 
for i in range(1, 1500 + 1):
 
    if is_prime(summa(f(i))):
 
        ans += 1
 
print(ans)
 

Ответ: 301
Оцените статью
Я решу все!