【问题标题】:logic question about factorials关于阶乘的逻辑问题
【发布时间】:2010-03-19 23:53:51
【问题描述】:

我有一个问题,无法单独解决。我的老师今天给我一个逻辑任务,我相信你可以帮助我。

如何计算 factorial(41) 末尾的零的数量。 (纸上) 我知道这与编程无关,但我相信程序员可以帮助我。

提前致谢。

【问题讨论】:

  • @Syom,到目前为止你尝试过什么?
  • 我想选民认为:没有作业,英语不好,OP 立即询问而不是提供有关他所做的尝试的信息,或者这些点的组合
  • @jball 我英文不好,请改写你的问题
  • @syom:这是一个编程问题,但通过提及您所做的事情来改进帖子。
  • @Veger 我正在提高我的英语,我想了很多,我知道,我必须计算数字中“2”和“5”-s 的数量,但我可以'没有得到最终结果:(

标签: logic


【解决方案1】:

如果你知道诀窍,你甚至不需要纸。最后的零数是它可以被 10 整除的次数。 . .就素因数分解而言,这是它可被 5 整除的次数和可被 2 整除的次数中的最小值(因为我们需要 2 和 5 中的一个因子来生成10 倍)。但是对于阶乘,我们将每个小于或等于 41 的因数都包括在内,所以我们会得到比 5 的因数更多的 2 因数。所以我们只需要担心 5 的因数有多少。

所以计算小于或等于 41 且能被 5 整除的数字: 5,10,15,20,25,30,35,40

其中有 8 个,但不要忘记 25 给了我们一个额外的因数 5,因为它可以被 5 整除两次。所以总共是 5 的 9 个因数(因此是 10 的 9 个因数)。

【讨论】:

  • 很好的解释。我只是在一个公式中写了它的结果。我认为这很明显。我的坏
  • @Syom,这意味着您并没有真正理解被问到的问题。回到你的问题,这意味着还有 49 位数字,以科学格式编写。
  • @Syom:这是科学记数法。 . .这意味着 3.345...乘以 10 的 49 次方。但通常使用科学记数法时,某些数字会被截断。在这种情况下,确切的答案是 33452526613163807108170062053440751665152000000000,或者换句话说 3.3452526613163807108170062053440751665152 x 10^49 [来源:WolframAlpha——只需输入 41 (! 表示阶乘)]
  • 但是,不要把答案交进去。 . .问题的关键肯定是要理解因式分解,因此您不必必须实际计算 41!
  • @Syom:我有点犹豫要不要在公共论坛上发布我的联系信息,不幸的是 StackOverflow 目前不支持私人消息传递。如果您想进一步讨论,我会在这里继续回复 cmets。 . .或者,如果您有一个与此问题相去甚远的后续问题,也许它值得拥有自己的主题。
【解决方案2】:
floor(n/5) + floor(n/25) + floor(n/125)+.......+floor(n/5^n)

在你的情况下 n = 41


见下面的cmets

【讨论】:

  • round here 表明每个表达式只应考虑整数部分(是的,floor)
  • @Sorantis: round(9/5) = 2floor(9/5) = 1
  • n=41, not 9 ... (9/5) 只是演示地板与圆形的示例
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多