【发布时间】:2015-02-14 13:59:46
【问题描述】:
我是 C 编程新手 我想找出给定数字的阶乘中尾随零的数量
{
long int n=0,facto=1,ln=0;
int zcount=0,i=1;
printf("Enter a number:");
scanf("%ld",&n);
if(n==0)
{
facto=1;
}
else
{
for(i=1;i<=n;i++)
{
facto=facto*i;
}
}
printf("%ld",facto);
while(facto>0)
{
ln=facto%10;
facto/10;
if(ln=!0)
{
break;
}
else
{
zcount+=1;
}
}
printf("Tere are Total %d Trailing zeros in given factorial",zcount);
}
我试图计算将返回给定数字的最后一位作为余数的数字的模数,然后n/10; 将删除最后一个数字。
执行程序后,输出始终显示尾随零的数量为“0”,即使有零,条件if(ln =! 0)也始终满足。
【问题讨论】:
-
正确的语法是
if (ln != 0 ) -
表达式
n=!0将!0分配给n。 -
“facto/10;”也没有多大作用。
-
@user3710044 是的,我注意到了我的错误。必须处理 5 的幂。它是所有 i 的 floor(n/5^i) 的总和,直到 5^i 大于 n。
-
欢迎来到 StackOverflow。以“请尽快帮助我”结束你的问题,看起来你认为你的问题应该优先于这里每天提出的数千个其他问题,这可能会让一些可以帮助你的人望而却步。这种空洞的结论在这里通常也被认为是不好的礼仪(即使它不是自私的),就像随机大写单词一样。