当前位置: 首页 > 知识库问答 >
问题:

Python,计算阶乘中的尾随零

吕皓
2023-03-14

我试图计算阶乘中尾随零的数量。

def count(x):
    zeros = 0                     
    for i in range (2,x+1): 
        print(i)
        if x > 0:
            if i % 5 == 0:       
                print("count")    
                zeros +=1       
        else:
            ("False")
    print(zeros)        

count(30)

我认为尾随零的数量不正确。

使用计数(30)时,30中有7个尾随的0。然而,它正在返回6。

共有3个答案

葛驰
2023-03-14

我们首先计算1到n(即X)之间5的倍数,然后计算25(~ s)的倍数,然后计算125,依此类推。为了计算n中mare的倍数,我们可以将n除以m

def countFactZeros(num):
    count = 0
    i = 5
    if num < 0:
        return False
    while num//i > 0:
        count = count + num//i
        i = i * 5
    return count

countFactZeros(10) # output should be 2
countFactZeros(100) # output should be 24
岳君之
2023-03-14

维基百科上有一篇关于这个特定主题的简短文章,其中说这可以通过计算因子为5的直接求和来计算。

def trailing_zeros_of_factorial(n):
    assert n >= 0, n
    zeros = 0
    q = n

    while q:
        q //= 5
        zeros += q

    return zeros

# 32! = 263130836933693530167218012160000000
print(trailing_zeros_of_factorial(32)) # => 7
盖泽宇
2023-03-14
def count (x):
    i = 5
    zeros = 0
    while x >= i:
        zeros += x // i
        i *= 5
    return zeros

print(count(30))
 类似资料:
  • 问题内容: 我正在尝试计算阶乘产生的数字的尾随零(这意味着数字变得很大)。以下代码采用一个数字,计算该数字的阶乘,并计算尾随零。但是,当数字大约为25!时,numZeros将不起作用。 我并不担心这段代码的效率,并且我知道有多种方法可以使这段代码的效率更好。我要弄清楚的是为什么计数大于25的数字结尾的零!不管用。 有任何想法吗? 问题答案: 您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案

  • 我试图改进大数的阶乘计算的运行时间。 第一个简单循环和乘法的代码。 此函数的分析结果: 对于n=1000--总时间:0.001115 s for n=10000--总时间:0.035327 s 对于n=100000——总时间:3.77454 s。 从n=100000的测线仪中,我可以看到大部分时间都花在乘法步骤上,即“98.8” 因此,试图将阶乘乘法减少一半,对于偶数,因此进行了强度减少。 后半部

  • 我是C编程新手,我想找出给定数的阶乘中尾随零的数量 我尝试计算数字的模,它将返回给定数字的最后一位作为余数,然后将删除最后一个数字。 执行程序后,输出总是将尾随零的数量显示为“0”,如果(ln=!0)条件始终得到满足,即使存在零。

  • 我试图计算给定数字的阶乘中尾随零的数量,例如。, ,其中尾随零 ,其中尾随零 我的问题是,我有一个像df这样的数据帧 我知道R中的阶乘是用来计算阶乘的,但我不知道如何计算尾部的零。任何帮助都将不胜感激!

  • 当我提交给leetcode时,它运行案例500/502,但失败了,原因是:1808548329。但当我在自己的mac上运行它时,它给出了与公认的答案相同的答案。 我的代码: 交流答案是: 它们在我的mac上运行相同的结果: 第一个解决方案之所以不被接受,是因为时间复杂度 (因为我在自己的mac上运行它,但它给出了与ac相同的答案) 如何计算第一个解决方案的时间复杂度, 它是O(NlogN)吗?我不

  • 我如何使程序执行一个新的或重复的操作,或要求用户再次输入一个数字,并知道它的阶乘。