`

如何求N的阶乘所得的数字末尾含有多少个0

J# 
阅读更多

原题是这样:  

给定一个整数N ,那么N 的阶乘N !末尾有多少个0呢?例如:N =10,N !=3 628 800,N !的末尾有两个0。

初看这样的题目可能会想到直接求出N!的阶乘,然后再计算出0的个数。显然用这种方法如果N很大的情况下,非常容易溢出。所以我们可以换个角度来分析这个问题。

N!=1×2×3×4×5×6×··· ×N

我们可以对N!进行分解质因数

N!=2x ×3y ×5z ··········

可以看到2和5相乘必然会产生一个10,而这个10会在阶乘的末尾添加一个0。那么问题就转化为2x ×5z 可以产生多少个0,即min(x,z),显然X肯定大于Z(能被2整除的数肯定比5多),最终问题转化为求Z的值-即找出1...N能分解出多少个5, 程序如下:

 

  1. int countFactorialZero(int N) {   
  2.     int ret = 0, i, j;   
  3.     for(i = 1; i <= N; i++)   
  4.     {   
  5.         j = i;   
  6.         while(j % 5 ==0)   
  7.        {   
  8.            ret++;   
  9.            j /= 5;   
  10.        }   
  11.     }   
  12.     return ret;   
  13. }  

 

分享到:
评论

相关推荐

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

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

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

    (N的阶乘)末尾有多少个0 nCount = Factorial(nTest); cout !末尾0的个数为: " ; // ... 其他测试案例 ... return 0; } ``` ##### 函数Factorial() 该函数`Factorial`接收一个整数`nNumber`作为参数,返回该整数...

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

    本文将深入探讨“n的阶乘问题”,包括阶乘的定义、计算阶乘位数的方法以及如何确定阶乘末尾零的个数。 首先,阶乘是指一个正整数n与小于等于它的所有正整数的乘积。用数学符号表示为`n! = n × (n-1) × (n-2) × ....

    判断阶乘末尾有几个零

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

    windlx求n阶乘

    windlx 运行的求n阶乘代码,学生很好用的,体系结构实验课

    JAVA求N的阶乘

    一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。 亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!...

    递归法求N的阶乘

    本示例聚焦于使用C语言实现递归法来计算一个整数N的阶乘(Factorial)。阶乘是一个数学概念,表示从1乘到指定正整数n的所有自然数的积,记作n!。例如,5的阶乘表示为5! = 5 × 4 × 3 × 2 × 1 = 120。 在C语言中...

    C语言,递归,求n的阶乘

    这是一道C语言 求n的阶乘,方法很简单,代码不超过5行

    java 求任意一个正数的阶乘

    阶乘是一个正整数n与小于它的所有正整数的乘积,表示为n!。例如,5的阶乘(5!)等于5 × 4 × 3 × 2 × 1 = 120。对于0和1,它们的阶乘定义为1。 现在,我们来看如何用Java编写一个计算阶乘的程序。 ### 循环方式...

    求阶乘-c#编写的求阶乘的程序

    总的来说,"求阶乘-c#编写的求阶乘的程序"是一个很好的学习资源,它可以帮助初学者巩固基础,锻炼逻辑思维,同时也能让他们接触到递归这种高级编程技术。通过编写和运行这样的程序,不仅可以学习到C#语言,还能提升...

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

    首先,我们需要知道一个数n的阶乘表示为所有小于等于n的正整数的乘积,即n! = 1 × 2 × 3 × ... × n。1000的阶乘会是一个极其庞大的数字,直接计算是不现实的,特别是在有限的计算资源下。因此,我们可以通过分析...

    VB 求n的阶乘

    在VB(Visual Basic)编程语言中,计算一个正整数n的阶乘是一个常见的数学问题。阶乘是指从1乘到n的所有正整数的乘积,表示为n!。例如,5的阶乘(5!)是1*2*3*4*5,结果为120。在VB中实现这个功能,我们可以使用循环...

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

    对每一个数字N,产生一行输出包括一个非负整数Z(N)。 【样例输入】 6 3 60 100 1024 23456 8735373 【样例输出】 0 14 24 253 5861 2183837 【题目提示】 N!=1 x 2 x 3 x ... N,此问题在于求把 N!分解为素数的...

    1到n的阶乘求和

    1. **初始化变量**:首先,我们需要一个变量来存储当前的阶乘值(初始设为1),以及一个变量来累积阶乘的总和(也初始化为0)。 2. **循环结构**:使用for循环遍历从1到n的整数。在每次迭代中,对当前的阶乘值进行...

    c++ 用递归求n的阶乘

    用c++用递归求n的阶乘,你的值由用户输入,输入不正确有错误提示对话框

    n的阶乘(n!)末尾有多少个0

    )末尾有多少个0? 代码实现非常简单!!!—- n!的末尾有count个0. int n; // n!的末尾有count个0. int count = 0; for (int i = 0; i &lt; n; i++) { n /= 5; count += n; } 由于在N特别大的时候强行算出N!...

    求N的阶乘(使用汇编语言)

    下载之后使用轻松汇编打开之后,代码直接保存一下,然后在进行编译,以及后面的运行,输入的数据是0-9的数据,每次只能输入一个数据。如果想要实验多次的话,运行多次,输入不同的结果,然后分别进行截屏!

    微机原理与接口——计算N的阶乘

    在微机原理与接口技术的学习中,计算N的阶乘是一项常见的实践任务,它涉及到多个汇编语言编程和计算机系统底层操作的知识点。本实验旨在训练学生掌握子程序调用、递归算法、堆栈操作以及汇编指令的运用。 首先,...

    数据结构实习之n(n≥20)的阶乘

    可以创建一个数组或映射来存储从1到n的阶乘值。 4. **时间复杂度与空间复杂度**:递归方法的时间复杂度为O(n),而空间复杂度为O(n)(考虑递归栈的空间)。循环方法的时间复杂度和空间复杂度都是O(n)。 5. **数据...

    VB求n的阶乘

    在这个程序中,我们可能会使用到一个文本框(TextBox)供用户输入数字n,一个按钮(Button)触发计算,以及一个标签(Label)显示结果。 1. **窗体设计**:在VB的界面设计工具中,创建一个新的窗体,拖放一个...

Global site tag (gtag.js) - Google Analytics