问一道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)}
展开
展开全部
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!的末尾有多少个零。
请给我小红旗
*问题分析与算法设计
可以设想:先求出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!的末尾有多少个零。
请给我小红旗
展开全部
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)
}
{
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)
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(1) n=m
(2) n=n/5
(3) m++
(2) n=n/5
(3) m++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |