我正在寻找一种Python方式来计算正整数的二进制表示形式中的尾随零数n
(这将指示最大幂2
除n
而无余数)。
一个简单的解决方案:
def CountZeros(n):
c = 0
while (n % 2) == 0:
n /= 2
c += 1
return c
但是,为了以更Python化的方式进行操作,我认为我可以利用:
bin(n)[2:]
,它给出的二进制表示形式 n
bin(n)[:1:-1]
,它给出了的反向二进制表示形式 n
因此,我的问题可以简化为对字符串中的尾随零进行计数。
有任何单一陈述的方式可以做到这一点吗?
我的最终目标是一种Python的方法,用于计算其最大幂2
除n
而无余数,因此不通过计数字符串中的尾随零来实现此目的的任何方法也应受到赞赏。
您可以使用str.rstrip
:
def trailing(s):
return len(s) - len(s.rstrip('0'))
我试图计算阶乘中尾随零的数量。 我认为尾随零的数量不正确。 使用计数(30)时,30中有7个尾随的0。然而,它正在返回6。
问题内容: 我正在尝试计算阶乘产生的数字的尾随零(这意味着数字变得很大)。以下代码采用一个数字,计算该数字的阶乘,并计算尾随零。但是,当数字大约为25!时,numZeros将不起作用。 我并不担心这段代码的效率,并且我知道有多种方法可以使这段代码的效率更好。我要弄清楚的是为什么计数大于25的数字结尾的零!不管用。 有任何想法吗? 问题答案: 您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案
问题内容: 我使用以下函数为整数计算对数基数2: 它是否具有最佳性能? 有人知道为此目的准备好了J2SE API函数吗? UPD1 对于我来说,令人惊讶的是,浮点运算似乎比整数运算要快。 UPD2 由于有评论,我将进行更详细的调查。 UPD3 我的整数算术函数比Math.log(n)/Math.log(2)快10倍。 问题答案: 如果您正在考虑使用浮点数来帮助进行整数运算,则必须小心。 我通常会尽
问题内容: 标题几乎可以自我解释。:) 问题答案: 如果它适合/ ,只需检查模10的数字是否为0并保留一个计数器: 如果太大而无法容纳,请将其存储在a中并从最后一个字符开始计数零:
我试图计算给定数字的阶乘中尾随零的数量,例如。, ,其中尾随零 ,其中尾随零 我的问题是,我有一个像df这样的数据帧 我知道R中的阶乘是用来计算阶乘的,但我不知道如何计算尾部的零。任何帮助都将不胜感激!
我试图改进大数的阶乘计算的运行时间。 第一个简单循环和乘法的代码。 此函数的分析结果: 对于n=1000--总时间:0.001115 s for n=10000--总时间:0.035327 s 对于n=100000——总时间:3.77454 s。 从n=100000的测线仪中,我可以看到大部分时间都花在乘法步骤上,即“98.8” 因此,试图将阶乘乘法减少一半,对于偶数,因此进行了强度减少。 后半部