如何用C++编程阶乘尾数零的个数,N!末尾有多少个零

 我来答
运水荷逄婷
2020-02-04 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:926万
展开全部
为了解决这个问题,必须首先从数学上分析在N!结果值的末尾产生零的条件。不难看出:一个整数若含有一个因子5,则必然会在求N!时产生一个零。因此问题转化为求1到N这N个整数中包含了多少个因子5。若整数N能被25整除,则N包含2个因子5;若整数N能被5整除,则N包含1
个因子5。
*程序说明与注释
#include
using
namespace
std;
int
main()
{
long
a,count
=0;
for(a=5;a<=N;a+=5)
//循环从5开始,以5的倍数为步长,考察整数
{
++count;
//若为5的倍数,计数器加1
if(!(a%25))
++count;
//若为25的倍数,计数器再加1
}
cout<<"The
number
of
0
in
the
end
of
N!
is:"<
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
务晖郗淡
2020-01-25 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:865万
展开全部
#include
using
namespace
std;
int
main()
{
int
n,c=0;
cout<<"please
input
n"<
cin>>n;
while(n!=0)
{
n/=5;
c+=n;
}
cout<<"the
number
of
zero
is
"<
return
0;
}
统计1-n中所有数含有因子5的个数之和,因为只有2和5相乘才会得到一个0,而因子2出现的次数远比5多,所以5的个数决定了0的个数
ps:楼上好像不对,如果125呢,有3个5,625呢。。。你好像都没考虑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悉南甘蔼
2019-06-27 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:848万
展开全部
tian20090730
的思路很正确,完全同意!但他的代码似乎有些问题。
看看我的代码吧,这个应该是正解了。采纳吧,嘿嘿。
#include
using
namespace
std;
int
main()
{
int
n;
cin
>>
n;
int
factor5_count
=
0;
//
查找第一个能被5整除的数字,也就是含有5因子的数字。
while
(n
%
5
!=
0)
{
n
--;
}
while
(n
>
0)
{
//
对每一个含有5因子的数字,进一步计算含有几个5因子
int
tmp
=
n;
while
(tmp
%
5
==
0)
{
factor5_count
++;
tmp
/=
5;
}
//
跳到下一个5的倍数处理
n
-=
5;
}
cout
<<
factor5_count
<<
endl;
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式