计算将整数减少为0的操作数

问题描述 投票:0回答:1

我有一个正整数,如果为奇数,它会减少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

我怀疑使用整数的二进制表示形式并使用按位运算符可能更有效。非常感谢您的任何帮助,建议或教训,谢谢。

python
1个回答
0
投票

这是我计算步骤的算法:

if my_number == pow(2,n):
    #minus_1 = 1
    #divide2 = n
    steps = n+1
else:
    #minus_1 = n+1
    #divide2 = n
    steps = 2n +1
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.