求N!末尾所得数字0的个数
2024-10-18 01:04:21
题目:给定一个整数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 ;
}
最新文章
- dSYM 文件分析工具
- Linux(二)__文件目录、常用命令
- IEnumerable<;>; ICollection <;>; IList<;>; 区别
- 创建Oracle10g ASM数据库
- java学习面向对象之接口
- Kubernetes volumes简介
- 【Java每日一题】20170216
- FFmpeg时间戳详解
- 九. Python基础(9)--命名空间, 作用域
- ubuntu安装最新的mercurial
- Python tricks(2) -- method默认参数和闭包closure
- AI学习路径
- Xilinx实习一年总结
- 在网页浏览器中原生显示PDF文件
- Mac - 关闭隐藏文件显示(Terminal)
- GuavaCache实现堆缓存
- 编译ORBSLAM2 build_ros.sh,实现kinect2在ROS环境下运行ORBSLAM2
- Notepad++ 更换主题
- 解决:TypeError: object() takes no parameters
- Tomcat 连接数与线程池详解
热门文章
- Sublime遇见中文乱码问题?
- Node程序debug小记
- 未来人类T5 安装win10,ubuntu双系统
- 【TortoiseSVN】windows中连接SVN服务器的工具
- jquery记忆笔记
- maven scope &#39;provided&#39; 和 ‘compile’的区别
- 数据科学实战手册(R+Python)书中引用资料网址
- 关于整型Integer、Int32、Int64、IntPtr、UINT、UInt32、Cardinal、UInt64、UIntPtr、NativeUInt、Pointer、Handle
- JAVA 解析TXT文本
- 20155225 2006-2007-2 《Java程序设计》第四周学习总结