酷狗的一个笔试题,有点意思!
问 N !的结果中末尾有多少个0?给出分析与编程计算。
分析:要知道N!有几个零,只看得0的原因:每一个数可分解质数的相乘,而质数的相乘中,2*5是10的,这是最后多一个0的原因。
如:N=6= 1*2*3*4*5=1*2*3*2*2*5=120 //有一个0,而5也只有一个,2总是比5的个数多(明显),
又如:N=10=1*2*3*4*5*6*7*8*9*10=1*2*3*2*2*5*2*3*7*2*2*2*3*3*2*5=3628800
(1) 得知5与0的个数密切相关,那么怎么知道一个数分解为全部质数乘积时,到底有多少个5呢?
看上面其实就是:5的个数= N/5( 向下取整) ,可验证 N = 6 时,6/5=1 ;N = 10时, 10/5 = 2;。。。。。。
(2) 好像是上面的样子,但事实上还漏了一些,一系列数中是每隔5个数就有一个能分解到1个5的质因子,每隔5*5=25个数就有一个数能分解为2个5.........以此类推得
5的个数=N/5+N/(5*5)+N/(5*5*5).........至N/Y=0为止。
如:N=25 , 那么 5的个数 = 25/5 &