1×2×3×4×5×…×2010所得数字末尾有多少个0?
3个回答
展开全部
501
分析:
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
至于分解出多少5,我用了两种方法:
1.我写了一个程序跑了出来
#include<stdio.h>
#include<conio.h>
int main()
{
int N=2010;
int ret = 0, i, j;
for(i = 1; i <= N; i++)
{
j = i;
while(j % 5 ==0)
{
ret++;
j /= 5;
}
}
printf("%d\n",ret);
getch();
return 0;
}
2.理论分析
5的n次方倍数的数肯定可以分解出n个5,2010小于5的5次方,大于5的4次方
小于25的数都最多只能分解出1个5,小于125的数最多只能分解出2个5,以此类推,小于5的n次方的数最多能分解出n-1个5。
考虑区间重叠问题。。后者肯定能由前者预先占位,即能5的n次方的倍数的数肯定是5的n-1次方倍数的倍数,且在此倍数位置,后者比前者大一。由此我们很容易得出结论,欲求a的阶乘能分解多少5,就分别求出a除以5的n次方后取整的和。。eg:
124 :124/5+124/25=28
624 :624/5+624/25+624/125=152
2010:2010/5+2010/25+2010/125+2010/624=501
不知道有没有帮助到你。。可能我的表述有点欠缺。。你有不明了的地方可以找我。
分析:
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
至于分解出多少5,我用了两种方法:
1.我写了一个程序跑了出来
#include<stdio.h>
#include<conio.h>
int main()
{
int N=2010;
int ret = 0, i, j;
for(i = 1; i <= N; i++)
{
j = i;
while(j % 5 ==0)
{
ret++;
j /= 5;
}
}
printf("%d\n",ret);
getch();
return 0;
}
2.理论分析
5的n次方倍数的数肯定可以分解出n个5,2010小于5的5次方,大于5的4次方
小于25的数都最多只能分解出1个5,小于125的数最多只能分解出2个5,以此类推,小于5的n次方的数最多能分解出n-1个5。
考虑区间重叠问题。。后者肯定能由前者预先占位,即能5的n次方的倍数的数肯定是5的n-1次方倍数的倍数,且在此倍数位置,后者比前者大一。由此我们很容易得出结论,欲求a的阶乘能分解多少5,就分别求出a除以5的n次方后取整的和。。eg:
124 :124/5+124/25=28
624 :624/5+624/25+624/125=152
2010:2010/5+2010/25+2010/125+2010/624=501
不知道有没有帮助到你。。可能我的表述有点欠缺。。你有不明了的地方可以找我。
2011-08-04 · 知道合伙人教育行家
关注
展开全部
2010/5=402
402/5=80......2
80/5=16
16/5=3........1
3/5=0..........3
402+80+16+3+0=501
解释:2010!=2010*2009*。。。*2*1
末尾0的个数=因子5的个数,(因为偶数2的个数比5多,2*5=10,每遇到一个因数5,末尾就多一个0)
能被5整除的有 2010/5=402个,
能被25整除的有 402/5=80个(每一个这样的数就会多一个因数5)
能被125整除的有80/5=16个
能被625整除的有16/5=3个
所以,2010!的末尾有 501个0.
402/5=80......2
80/5=16
16/5=3........1
3/5=0..........3
402+80+16+3+0=501
解释:2010!=2010*2009*。。。*2*1
末尾0的个数=因子5的个数,(因为偶数2的个数比5多,2*5=10,每遇到一个因数5,末尾就多一个0)
能被5整除的有 2010/5=402个,
能被25整除的有 402/5=80个(每一个这样的数就会多一个因数5)
能被125整除的有80/5=16个
能被625整除的有16/5=3个
所以,2010!的末尾有 501个0.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设有a个10的倍数,b个100的倍数,c个100的倍数,就有a+b+c个0自己慢慢数吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询