Насколько я понял нужно не наименьшее, а наибольшее число k, иначе это какая-то бессмыслица.
Нельзя пользоваться возведением в степень, но двоичный логарифм использовать никто не запрещал )
from math import log2
N = int(input())
k = int(log2(N))
print(k)
выведите такое наименьшее целое
число k что 2**k <= N
Нельзя пользоваться возведением в степень
N = int(input())
k = 1 while k <= n:
k = k * 2 * 2 print (k)
игнорирует каждое 2е число 4 16 64... а должно быть(2 4 6 8 16...)