18/10/09 22:47:13.54 GJATXU7l.net
>>84
-- n,kは自然数、pは素数で、2<n, 0<k<nである。 nCk=p! となる(n,k,p)の組を全て決定せよ。
-- Haskellでプログラミングして書き出す
import Data.List
divisor n = find (\m -> n `mod` m ==0 )[2..floor.sqrt.fromIntegral $ n]
choose n r = product[1..n] `div` product[1..n-r] `div` product[1..r]
maxN=1000
main =do
print $ [(n,k,p) | n <- [2..maxN], k <- [1..(n-1)], p <-[2..maxN], divisor p == Nothing, choose n k == product[1..p]]
Prelude> :main
[(2,1,2),(4,2,3),(6,1,3),(6,5,3),(10,3,5),(10,7,5),(16,2,5),(16,14,5)