這題依據 m 分成兩部分,分述如下 :
1. m 是質數
(1) 若 n 小於 m ,因為 n ! 是從 1 到 n 的連乘積,且 m 是質數,
n 小於 m 情形下,n ! 不存在 m 這個質因數,自然 m 無法整除 n !
例 : m = 23,n = 10,10 ! 是從 1 連乘到 10 ,並不存在 23 這個質因數,因此無法整除
(2) 若不是上述情形,則只要求 n ! 共有幾個 m 便是答案
2. m 不是質數
將 m 做質因數分解,邊分解邊確認 m 的某個質因數是否可以整除 n !
亦即將問題變成多個 " m 是質數 " 的情形,並加上以下判斷
若 m 的某個質因數 pi,其個數為 xi ( m 有 xi 個 pi )
xi 大於 n ! 中 pi 的個數 yi ,則 n ! 無法被整除,直接輸出
( n ! 的 pi 不夠給 m 的 pi 除完,m 就無法整除 n ! )
否則答案為 yi / xi 中最小的一個
例 : m = 50,n = 10,可求得 p1 = 2,p2 = 5,x1 = 1,x2 = 2,y1 = 8,y2 = 2
( m = 2^1 * 5^2 , n ! 共有 8 個 2 與 2 個 5 )
y1 / x1 = 8
y2 / x2 = 1
所以答案 = 1