2520是最小的可被從1到10以內(nèi)的數(shù)整除的數(shù),求可被從1到20以內(nèi)的數(shù)整除的最小正整數(shù)
公倍數(shù) [] = 1
公倍數(shù) (素?cái)?shù):遞增數(shù)列) = 素?cái)?shù) * (公倍數(shù) $ map lambda 遞增數(shù)列)
where lambda = \n->if n `mod` 素?cái)?shù)==0 then n `div` 素?cái)?shù) else n
answer = 公倍數(shù) [1..20]
在車(chē)上弄懂了如何求兩個(gè)數(shù)的最小公倍數(shù),然后推廣到多個(gè)數(shù)的最小公倍數(shù),再使用篩法的思想優(yōu)化算法,即得。
只能應(yīng)用于+1遞增數(shù)列。
任意自然數(shù)列請(qǐng)用:
foldl (lcm) 1 [1..20]