`
callmegod
  • 浏览: 110288 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

100阶乘末尾有多少个零?

 
阅读更多

在一堂无聊的信息检索课程上

旁边的同学提出了一道java面试题——100的阶乖末尾有多少个零?

我结合网上的思路对此探讨一下:


题目:1*2*3*……*100 求结果末尾有多少个零


分析:

一般类似的题目都会蕴含某种规律或简便方法的

阶乘末尾一个零表示一个进位,则相当于乘以10

而10 是由2*5所得,在1~100当中,可以产生10的有:0 2 4 5 6 8 结尾的数字,

显然2是足够的,因为4、6、8当中都含有因子2,所以都可看当是2,那么关键在于5的数量了

那么该问题的实质是要求出1~100含有多少个5

由特殊推广到一般的论证过程可得:

1、 每隔5个,会产生一个0,比如 5, 10 ,15,20.。。 


2 、每隔 5×5 个会多产生出一个0,比如 25,50,75,100 

3 、每隔 5×5×5 会多出一个0,比如125.


所以100!末尾有多少个零为:

100/5+100/25=20+4=24

那么1000!末尾有多少个零呢?同理得:

1000/5+1000/25+1000/125=200+40+8=248


到此,问题解决了,但我们在学习过程中应当学会发散思维、举一反三


接着,请问N!的末尾有多少个零呢??


其实 也是同理的


N/5+N/25+……


 

如计算 2009! 的末尾有多少个0:

2009/5 = 401        1~2009之间有 401 个数是 5 的倍数(余数省略).

401/5 = 80            1~2009 之间有 80 个数是 25 的倍数.

80/5 = 16              1~2009 之间有 16 个数是 125 的倍数.  

16/5 = 3                1~2009 之间有 3个数是 625 的倍数.      

3/5 = 0                  1~2009 之间有 0 个数是 3125 的倍数.

所以, 2009 的末尾有 401 + 80 + 16 + 3 = 500 个0.

 

 

分享到:
评论

相关推荐

    判断阶乘末尾有几个零

    判断阶乘末尾有几个零 阶乘 不计算阶乘 不计算阶乘

    n的阶乘末尾有多少个0_n的阶乘末尾的0_

    在给定的文件列表中,“n的阶乘末尾有多少个0.cpp”可能是实现这个算法的C++源代码,而“n的阶乘末尾有多少个0.exe”是编译后的可执行文件,用于直接运行程序并得到结果。 通过这种方法,我们可以有效地处理大数...

    C++版本计算n阶乘末尾0的个数原理讲解及代码实现

    本篇文章主要介绍如何使用C++编程语言来计算一个正整数n的阶乘末尾0的数量,并通过示例代码加以说明。该方法不仅阐述了理论基础,还提供了具体的实现思路。 #### 原理讲解 ##### 计算末尾0的数量 为了理解如何计算...

    n的阶乘问题--阶乘位数--阶乘末尾0的个数

    因为10=2×5,所以一个数的阶乘末尾零的个数取决于它包含2的因子和5的因子的数目。由于2的因子通常比5的因子多,因此确定末尾零的数量主要取决于5的因子。每出现一个5,末尾就会增加一个零。例如,25的阶乘有六个零...

    C语言编程训练:循环结构-求阶乘末尾零个数

    的末尾零的个数。例如10!=3628800,则Z(N)=2。 编写计算机程序有效的确定Z的值。 【输入说明】 输入的第一行是一个单个的确定的正整数T,他指名接下来的数字的个数,然后是 T 行,每一行包括一个确定的正整数N,1,...

    求1000阶乘的结果末尾有多少个0

    3. **结束条件**:由于每次2的因子都会找到一个与之匹配的5的因子(除了那些包含额外5因子的数),我们只需要计算`count5`来确定末尾零的个数。因为对于每一对2和5,它们会产生一个10,也就是一个零。然而,由于可能...

    简单代码之matlab计算阶乘

    小程序之matlab计算阶乘,阶乘函数的实现

    java阶乘计算获得结果末尾0的个数代码实现

    在Java编程中,计算阶乘并...总结一下,确定阶乘末尾零的个数关键在于找到n中因子5的总数。对于较大的n,这个方法不仅效率高,而且节省了计算资源。在实际编程中,理解和应用这种策略对于优化算法和解决问题至关重要。

    c语言编程题之数学问题阶乘后的0.zip

    printf("%d的阶乘末尾有%d个0\n", num, zeros); return 0; } ``` 这个程序首先定义了一个`countTrailingZeros`函数,它通过循环计算5的幂并累加n能被这些幂整除的次数来找到零的个数。在`main`函数中,用户输入一...

    阶乘后的零(java代码).docx

    由于10可以分解为2和5的乘积,而在任何正整数的阶乘中,因子2的数量通常比因子5的数量多(因为每两个连续的整数中至少有一个是偶数,从而至少包含一个因子2),因此计算阶乘尾随零的关键在于计算因子5的数量。...

    高精度计算1000阶乘

    输出部分首先查找第一个非零元素的位置,然后从这个位置开始输出直到数组的末尾。这样可以避免输出前导零。 #### 注意事项 - **数组大小**:本例中使用了100000的数组大小,这足以存储1000!的结果。 - **循环方向*...

    c++程序 大数阶乘

    在IT领域,大数阶乘是一个常见的计算挑战,特别是在编程语言如C++中。这个任务涉及到处理超过标准整型变量范围的数值,并且通常需要自定义数据结构和算法来完成。下面将详细讨论如何利用C++实现大数阶乘计算,并以...

    大数阶乘算法

    在计算机科学中,大数阶乘算法是一种处理大数据量计算的算法,特别是在处理超过普通整型范围的数字乘法时,如计算一个大整数的阶乘。在本例中,我们将关注如何使用链表来实现这个算法,这种方式对初学者来说特别友好...

    用C语言实现n!最后一位非零数字的算法与程序分析.pdf

    中末尾零的个数,并进而确定最后一个非零数字。 程序实现上,可以利用循环和除法操作,首先计算因子5的个数P,然后在阶乘乘法过程中,每次乘以一个数之前,先除以P个2,以确保在最终结果中末尾不会有零产生。 这一...

    Last-non-zero-digit.zip_Zero_数论

    标题中的"Last-non-zero-digit.zip_Zero_数论"暗示了我们正在探讨一个关于数论的数学问题,具体来说是寻找大数阶乘末尾非零数字的问题。在数论领域,这种问题通常与模运算、欧拉函数以及素数分布等概念紧密相关。 ...

    超大数据,高精度加法和高精度阶乘运算

    3. 输出阶乘结果时,从数组末尾开始,逆序输出每个元素的值。 这种算法的效率并不高,因为它的时间复杂度为O(n^2),对于非常大的`n`,可能会导致性能问题。更高效的方法是使用Karatsuba算法或Toom-Cook算法等分治...

    c语言求阶乘精确值示例

    6. 计算完成后,从数组`f`的末尾开始查找非零元素,直到找到第一个非零元素的索引`j`,这就标志着阶乘结果的开始。 7. 最后,从索引`i = j`开始,倒序遍历数组`f`并打印出每一位,以得到阶乘的精确值。 8. 输出...

    ACM编程测试小程序

    1. **阶乘末尾零的个数**:在计算一个数的阶乘时,我们会遇到末尾零的问题。末尾零的个数由2和5的因子个数决定,因为10=2×5。一个数的因子2总是比因子5多,所以计算因子5的数量就能确定零的个数。 2. **菱形字母**...

    杭电acm1066解题报告

    因此,计算阶乘末尾零的数量实际上就是计算阶乘中因子2和5的数量,取二者中较小的一个。 - **因子2的数量**: 直接计算阶乘中因子2的数量相对容易,因为2是一个较小的质数。 - **因子5的数量**: 计算阶乘中因子5的...

Global site tag (gtag.js) - Google Analytics