數學學習之階乘
阿新 • • 發佈:2019-02-02
今天看了一會《離散數學及其應用》的第一章後面的上機題的第一道題。
求n!的位數在100到100之間的最大的n。
要解決這個問題,首先就來研究一下階乘的性質。
查一下wiki百科,就會發現關於階乘有個斯特林公式: (有興趣戳這裡),那麼我們就可以很快的求出n的階乘。但是我們不需要求出n的階乘,只需要知道它有多少位。所以現在就要知道怎樣求一個數有多少位了。答案就是log(n)+1。下面是簡單證明:
設一個數為n,它有w位,則它可表示為n=c+10^(w-1),其中c<10。所以w=log(n)+1。
所以有斯特林公式,就可以很快的求出n的階乘有多少位了。
因此,解決上面的問題求n!的位數在100到100之間的最大的n,就只需要簡單的列舉下就可以了。
既然在看階乘,就一下把相關的題目做一做吧。
將n!展開:n!=1*2*3*4*5······*n。要想知道末尾有多少零,只需知道有多少個2和5相乘就可以了。又因為在n!中5比2少很多,只需要知道有多少個5既可以了,即在n!中,因子5出現了多少次。關於這個問題,《具體數學》中有所提及。
給定一個素數p,在{1,2,3,···n}中,它的倍數有ceil(n/p)個。
則p的平方, 在{1,2,3,···n}中,它的倍數有ceil(n/p^2)個。
依次類推,就知道在{1,2,3,···n}中,素數p一共出現了多少次。