C语言 选择题填空题

下面程序段的功能是计算1000!的末尾含有多少个零,请选择填空,(提示:只要算出1000!中含有因数5的个数即可)for(k=0,i=5;i<=1000;i+=5){m=... 下面程序段的功能是计算1000!的末尾含有多少个零,请选择填空,(提示:只要算出1000!中含有因数5的个数即可)

for(k=0,i=5;i<=1000;i+=5)
{
m=i;
while(_____) {k++;m=m/5;}
}
答案是m%5==0

我不明白(提示:只要算出1000!中含有因数5的个数即可)中含有因数5的个数是什么意思

m=m/5 是什么意思?

题目要求的是计算1000! 但是程序段中没有计算1000!的语句啊?

麻烦帮每一步帮我详细解释一下 我是初学者 有点迷糊
展开
 我来答
百度网友70e9e13
2011-01-02
知道答主
回答量:11
采纳率:0%
帮助的人:6.9万
展开全部
因为1000!的结尾有几个0之和2和5有关,只有5*2才可能出现0,1000!是1*2*3····*1000,将每个数分解,2已经存在,因此只要乘个5就会出现一个0,所以现在要计算的是有多少个5。while(_____) {k++;m=m/5;}
这一句就是计算1···1000这一千个数中每个可以写成5的多少次方,比如10!的结尾就应该有2个0,计算如下:
1为1*5的零次方,2为2*5的零次方,···,5=5的一次方,····,10=2*5的一次方,这里其他数想乘都不会出现0,但只要乘个5就会出现0,10!=1*2*3*4*5*6*7*8*9*10=28*34*52*7=((128*81*7)*2*5)*5
chiconysun
2011-01-02 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2506万
展开全部
因为最终阶乘的值中,分解为质数因子时,2的阶次远远多于5的阶次,因此只需要计算最终积有多少个5的重复因子就可以了,循环就是在累加从1到1000各个数所包含5的因子的次数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xdsh99
2011-01-02 · TA获得超过884个赞
知道小有建树答主
回答量:598
采纳率:0%
帮助的人:359万
展开全部
含有因数5的个数---指的是能被五整除的数的个数
m=m/5 等价于 m除以5的商,不计余数

for(k=0,i=5;i<=1000;i+=5) //k,i的初值为0,5 i在小于或等于1000的情况下执行下面的语句,i每次加5
{
m=i; //i复制给m
while(_____) {k++;m=m/5;} //()中内容为真的情况下执行下面一句话,k+1,m除以5
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gengpei1985
2011-01-02
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
由(2,5)的组数决定有多少0,2的个数肯定比5多,所以就由5决定0的个数了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式