Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан следующими соотношениями:
, при
, если
нечетно
иначе
Определите для скольких чисел из отрезка [2; 10000] функция вернет значение True?
Решение 1
def f1(n):
if n == 1:
return True
if n % 2 == 0:
return f1(n//2)
else:
return False
k = 0
for i in range(2, 10000+1):
if f1(i):
k += 1
print(k)
Решение 2
Если число не будет полной степенью двойки, то при последовательном делении на мы вскоре получим нечетное число (кроме
) и вернем
,
вернут только степени двойки в данном диапазоне, а их всего
.
Ответ: 13