Вы не можете сделать это в O (1) для сколь угодно больших чисел.Вам нужно хотя бы O (log (n)), чтобы посмотреть двоичное представление числа один раз.
Если вы установите ограничение на значение n (например, 64 бита), тогда everything выполнимо в O (1)!О-нотация не будет иметь никакого реального смысла в этом случае.