题目:给定一个整数N ,那么N 的阶乘N !末尾有多少个0呢?

例如:N = 10,N! = 3628800,所以N!末尾就有2个零。

分析:如果直接先算出N!阶乘,很容易导致内存溢出。显然,直接算出来是不行的。所以,我们可以换一个角度来分析这个问题。我们知道

  N! = 1*2*3*4*......*N,所以,我们可以对N!进行分解质因数。即N! = 2^x * 3^y * 5 ^z........可以看到2和5相乘,必然会产生一个零。那么问题就转化为2^x * 5^z可以产生多少个零就可以了。即求出min(x,z)。显然x大于z(能被2整除的肯定比能被5整除的多),故我们只需要求出1...N能够分解出多少个5就行了。

代码:

# python 版
def count_zero_number(value):
if not isinstance(value,int):
raise TypeError("参数必须为整型")
res = 0
if value <= 0:
return 0
i = 1
while i <= value:
j = i # 保存当前i的值
while j % 5 == 0: # 判断当前值是否含有重复质数
count += 1
j = j // 5 # 更新j的值
i += 1
return count
# Cpp版
int count_zero_number(int value){
if(value <=)
return ;
int ret = ,i,j;
for(i = ;i < value;i++){
j = i;
while(j % == ){
ret++;
j /= ;
}
}
return ret ;
}

最新文章

  1. dSYM 文件分析工具
  2. Linux(二)__文件目录、常用命令
  3. IEnumerable&lt;&gt; ICollection &lt;&gt; IList&lt;&gt; 区别
  4. 创建Oracle10g ASM数据库
  5. java学习面向对象之接口
  6. Kubernetes volumes简介
  7. 【Java每日一题】20170216
  8. FFmpeg时间戳详解
  9. 九. Python基础(9)--命名空间, 作用域
  10. ubuntu安装最新的mercurial
  11. Python tricks(2) -- method默认参数和闭包closure
  12. AI学习路径
  13. Xilinx实习一年总结
  14. 在网页浏览器中原生显示PDF文件
  15. Mac - 关闭隐藏文件显示(Terminal)
  16. GuavaCache实现堆缓存
  17. 编译ORBSLAM2 build_ros.sh,实现kinect2在ROS环境下运行ORBSLAM2
  18. Notepad++ 更换主题
  19. 解决:TypeError: object() takes no parameters
  20. Tomcat 连接数与线程池详解

热门文章

  1. Sublime遇见中文乱码问题?
  2. Node程序debug小记
  3. 未来人类T5 安装win10,ubuntu双系统
  4. 【TortoiseSVN】windows中连接SVN服务器的工具
  5. jquery记忆笔记
  6. maven scope &#39;provided&#39; 和 ‘compile’的区别
  7. 数据科学实战手册(R+Python)书中引用资料网址
  8. 关于整型Integer、Int32、Int64、IntPtr、UINT、UInt32、Cardinal、UInt64、UIntPtr、NativeUInt、Pointer、Handle
  9. JAVA 解析TXT文本
  10. 20155225 2006-2007-2 《Java程序设计》第四周学习总结