C语言中如何计算1000!的末尾有多少个零 ?为什么可以这样算? 原理?

main(){inti,k;for(k=0,i=5;i<=1000;i+=5){m=i;while(【1】){k++;m=m/5;}}}m%5==0。。。为什么呢?看不懂... main ( )
{
int i,k;
for (k=0,i=5; i<=1000; i+=5)
{ m = i ;
while (【1 】) { k++; m=m/5 ; }
}
}
m%5==0 。。。为什么呢? 看不懂
展开
 我来答
codyboyzj
2011-05-24 · TA获得超过592个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:564万
展开全部
5乘以一个不能 被5整除的偶数 后就会产生一个0,例如5*2=10,
本程序的实质就是统计所有的数能分解成多少5相乘,注意只有5的倍数才能分解出5,所以循环为for (k=0,i=5; i<=1000; i+=5)
然后m%5==0就表示能m是5的倍数,m=m/5加上循环的作用是将m分解出一个5个再进行分解,直到分解不出5
例如m=100,能分解出两个5即 5*5*4,k就会加上2
统计好所有的5的个数后就知道可以乘出多少个0了,因为除尾数为0偶数外,偶数2的倍数分解产生的2比5多。
百度网友0d938bf
2011-05-24 · TA获得超过196个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:93.9万
展开全部
这是填空题吧。。。
也不是算除以10啊
是除以5的好不好。。。

问题很奇怪。——————鉴定完毕
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pretty丶夏末
2011-05-24 · TA获得超过340个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:487万
展开全部
LZ这个【1 】是什么意思?是不是打错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式