问一道C语言的题

问题是这样的求100的阶乘的末尾包含多少个0?程序通过找出1-100之间的所有整数所包含5这个因子的个数来求解.如100=5*5*4含5的因子个数为2.在求阶乘过程中会产... 问题是这样的求100的阶乘的末尾包含多少个0?程序通过找出1-100之间的所有整数所包含5这个因子的个数来求解.如100=5*5*4含5的因子个数为2.在求阶乘过程中会产生2个0.此体为填空题main(){int m,n,k=0;for(m=5;m<=100){此处填语句;while(n%5==0){k++;此处填语句;}此处填语句;}printf("100!include%d___0",k)} 展开
 我来答
以画屏屏8748
2008-01-31 · TA获得超过7191个赞
知道大有可为答主
回答量:2581
采纳率:0%
帮助的人:3296万
展开全部
100!的尾数有多少个零?

*问题分析与算法设计
可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整数范围有限,这是不可能的。
为了解决这个问题,必须首先从数学上分析在100!结果值的末尾产生零的条件。不难看出:一个整数若含有一个因子5,则必然会在求100!时产生一个零。因此问题转化为求1到100这100个整数中包含了多少个因子5。若整数N能被25整除,则N包含2个因子5;若整数N能被5整除,则N包含1个因子5。
*程序说明与注释
#include<stdio.h>
int main()
{
int a,count =0;
for(a=5;a<=100;a+=5) //循环从5开始,以5的倍数为步长,考察整数
{
++count; //若为5的倍数,计数器加1
if(!(a%25)) ++count; //若为25的倍数,计数器再加1
}
printf("The number of 0 in the end of 100! is: %d.\n",count); //打印结果
return 0;
}

*运行结果
The number of 0 in the end of 100! is: 24.

*问题进一步讨论

本题的求解程序是正确的,但是存在明显的缺点。程序中判断整数N包含多少个因子5的方法是与程序中的100有关的,若题目中的100改为1000,则就要修改程序中求因子5的数目的算法了。

*思考题

修改程序中求因子5的数目的算法,使程序可以求出任意N!的末尾有多少个零。
请给我小红旗
WXD110114dccd8
2008-01-31 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.6万
采纳率:43%
帮助的人:7780万
展开全部
main()
{
int m,n,k=0;
for(m=5;m<=100;)
{n=m;
while(n%5==0)
{
k++;
n/=5;
}
m+=5;
}
printf("100!include%d___0",k)
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9c45d3452
2008-01-31 · 超过19用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:71.7万
展开全部
(1) n=m
(2) n=n/5
(3) m++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式