我有一个正整数,如果为奇数,它会减少1,并作为一个步数;如果将偶数除以2,则它作为一个步数。目标是计算使整数变为0的步骤数。似乎很简单,但是整数非常大,需要很多时间,我想找到一种方法来加快处理速度。
def counting_steps(my_number):
steps = 0
while my_number != 0:
if my_number % 2 == 0:
my_number = my_number / 2
steps += 1
else:
my_number -= 1
steps += 1
return steps
我怀疑使用整数的二进制表示形式并使用按位运算符可能更有效。非常感谢您的任何帮助,建议或教训,谢谢。
这是我计算步骤的算法:
if my_number == pow(2,n):
#minus_1 = 1
#divide2 = n
steps = n+1
else:
#minus_1 = n+1
#divide2 = n
steps = 2n +1