您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案使用http://en.wikipedia.org/wiki/Trailing_zeros中的公式(您可以尝试证明)
def zeroes(n): i = 1 result = 0 while n >= i: i *= 5 result += n/i # (taking floor, just like Python or Java does) return result
希望您可以将此翻译为Java。这仅计算[n / 5] + [n / 25] + [n / 125] + [n / 625] +
…,并在除数大于n时停止。
不要使用BigIntegers。这是一个bozosort。这样的解决方案需要大量时间才能实现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)