C语言中如何计算1000!的末尾有多少个零 ?为什么可以这样算? 原理?
main(){inti,k;for(k=0,i=5;i<=1000;i+=5){m=i;while(【1】){k++;m=m/5;}}}m%5==0。。。为什么呢?看不懂...
main ( )
{
int i,k;
for (k=0,i=5; i<=1000; i+=5)
{ m = i ;
while (【1 】) { k++; m=m/5 ; }
}
}
m%5==0 。。。为什么呢? 看不懂 展开
{
int i,k;
for (k=0,i=5; i<=1000; i+=5)
{ m = i ;
while (【1 】) { k++; m=m/5 ; }
}
}
m%5==0 。。。为什么呢? 看不懂 展开
3个回答
展开全部
5乘以一个不能 被5整除的偶数 后就会产生一个0,例如5*2=10,
本程序的实质就是统计所有的数能分解成多少5相乘,注意只有5的倍数才能分解出5,所以循环为for (k=0,i=5; i<=1000; i+=5)
然后m%5==0就表示能m是5的倍数,m=m/5加上循环的作用是将m分解出一个5个再进行分解,直到分解不出5
例如m=100,能分解出两个5即 5*5*4,k就会加上2
统计好所有的5的个数后就知道可以乘出多少个0了,因为除尾数为0偶数外,偶数2的倍数分解产生的2比5多。
本程序的实质就是统计所有的数能分解成多少5相乘,注意只有5的倍数才能分解出5,所以循环为for (k=0,i=5; i<=1000; i+=5)
然后m%5==0就表示能m是5的倍数,m=m/5加上循环的作用是将m分解出一个5个再进行分解,直到分解不出5
例如m=100,能分解出两个5即 5*5*4,k就会加上2
统计好所有的5的个数后就知道可以乘出多少个0了,因为除尾数为0偶数外,偶数2的倍数分解产生的2比5多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询