求100!中的末尾的零的个数

    技术2022-05-18  14

    当然最好不要把100!算出来。不过我算出来了是:100

     

    93326215443944152681699238856266700490715968264381621468592963895217599993229915

    608941463976156518286253697920827223758251185210916864000000000000000000000000

     

    Press any key to continue

     

    先介绍少年百科上的一篇文章。

     

     


     

    尾巴上的零

    [zww.cn/CGZ]来源: 2002-7-25 20:51:58

      1×2×3×4×5×…×1990×1991的乘积末端有几个零?(中间的0不算)  从1一个不漏地乘到1991,这个数字实在太大了,不容易分析。因此,我们先从小处着手来解剖麻雀。先看1×2×3×4×5×6=720,其末位只有一个0,从而可以看出,在质因数的乘积中,只有2×5的积才会出现一个零。  有人会说,4×25=100,不是出现两个零吗?对!但是4×25=22×52=(2×5)2,可见还是2×5在起作用!  好比生病一样,病原菌已找到,问题就很清楚。另外又容易看到,在一串连续数的乘积中,因子2远比因子5要多,所以主要矛盾取决于5的个数,犹如在一个社团中,男多女少,结成配偶的对数就取决于女方了。  于是我们开始清点1×2×…×1991中含有多少个5的因子,先考虑单个的5,由于1991÷5的商数为398,这个数字就算出来了。  继续清点该连乘积中含有52=25的因子,如法炮制,可立即算出这个数字为79。  再清点53=125及54=625的因子个数,它们分别有15个和3个。由于能被15整除的数也可以被5整除,所以我们在清点时只计一次,不要重复。  于是我们可以马上判明在这个漫长的连乘积中,其尾巴上一共有 398+79+15+3=495个零。顺便讲一句,495这个数倒也有趣,它是一个"再生数",因为我们把这三个数码经重排后得到的最大三位数与最小三位数相减,还是可以得到495,即954-459=495。

     

     

     


     

     

    #include "stdio.h" void main() { int i, count; count=0; for( i=5; i<=100; i+=5) { count++; if( i%==0 ) count++; } printf("%d",count); }

     

    很简单,结果就算出来了~ 


    最新回复(0)