nobsun #4909(2007/12/21 02:30 GMT) [ Haskell ] Rating1/1=1.00
ghcでコンパイルすると 桁数 : 時間 10 : 0.6s 11 : 1.9s 12 : 6.1s 13 : 18.0s 14 : 52.4s 15 : 150.1s 1桁増えるごとに約3倍 20桁なら10時間かな? Meertens数は81312000しか知られていないらしいです。 他にあるかどうかも未知らしい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
module Main (main) where import Data.Tree import System.Environment primes :: [Integer] primes = sieve [2..] where sieve (p:xs) = p:sieve [x | x <- xs, x `mod` p /= 0] type Label = (Integer, Integer) powers :: Integer -> [Integer] powers = flip iterate 1 . (*) mktree :: Int -> Label -> [[Integer]] -> Tree Label mktree k l pss = unfoldTree phi (l,pss) where phi (x,[]) = (x,[]) phi (x,ps:pps) = (x,zip (labels x ps) (repeat pps)) labels (n,g) ps = zip (map (10*n +) [0..9]) (takeWhile (10^k >) (map (g*) ps)) gtree :: Int -> Tree Label gtree k = snip $ mktree k (0,1) $ map powers $ take k primes where snip (Node x ts) = Node x (tail ts) meertens :: Int -> [Integer] meertens k = [ n | (n,g) <- flatten $ gtree k, n == g ] main :: IO () main = putStr . unlines . map show . meertens . read . head =<< getArgs
Rating1/1=1.00-0+
[ reply ]
nobsun
#4909()
[
Haskell
]
Rating1/1=1.00
Rating1/1=1.00-0+
[ reply ]