A189398 a(n) = 2^d(1) * 3^d(2) * ... * prime(k)^d(k), where d(1)d(2)...d(k) is the decimal representation of n.
2, 4, 8, 16, 32, 64, 128, 256, 512, 2, 6, 18, 54, 162, 486, 1458, 4374, 13122, 39366, 4, 12, 36, 108, 324, 972, 2916, 8748, 26244, 78732, 8, 24, 72, 216, 648, 1944, 5832, 17496, 52488, 157464, 16, 48, 144, 432, 1296, 3888, 11664, 34992, 104976, 314928, 32
Offset: 1
Links
- Reinhard Zumkeller, Table of n, a(n) for n = 1..10000
- Richard S. Bird, Functional Pearl: Meertens number, Journal of Functional Programming 8 (1), Jan 1998, 83-88.
- Wikipedia, Meertens number
Crossrefs
Cf. A000040.
Programs
-
Haskell
import Data.Char (digitToInt) import Data.List (findIndices) a189398 n = product $ zipWith (^) a000040_list (map digitToInt $ show n) -- Two computations of the Meertens number: the first is brute force, meertens = map succ $ findIndices (\x -> a189398 x == x) [1..] -- ... and the second is more efficient, from Bird reference, page 87: meertens' k = [n | (n,g) <- candidates (0,1), n == g] where candidates = concat . map (search pps) . tail . labels ps ps : pps = map (\p -> iterate (p *) 1) $ take k a000040_list search [] x = [x] search (ps:pps) x = x : concat (map (search pps) (labels ps x)) labels ps (n,g) = zip (map (10*n +) [0..9]) (chop $ map (g *) ps) chop = takeWhile (< 10^k) -- Time and space required, GHC interpreted, Mac OS X, 2.66 GHz: -- for >head meertens: (466.87 secs, 254780027728 bytes); -- for >meertens' 8: ( 0.28 secs, 62027124 bytes).
-
Maple
a:= n-> `if`(n=0, 1, ithprime(length(n))^irem(n, 10, 'm') *a(m)): seq(a(n), n=1..110); # Alois P. Heinz, May 04 2011
-
Mathematica
a[n_] := (p = Prime[Range[Length[d = IntegerDigits[n]]]]; Times @@ (p^d)); Array[a, 50] (* Jean-François Alcover, Jan 09 2016 *)
-
PARI
a(n)=my(d=digits(n),p=primes(#d)); prod(i=1,#d,p[i]^d[i]) \\ Charles R Greathouse IV, Aug 19 2014
-
Python
from sympy import prime from operator import mul from functools import reduce def A189398(n): return reduce(mul, (prime(i)**int(d) for i,d in enumerate(str(n),start=1))) # Chai Wah Wu, Aug 31 2014
-
Python
# implementation using recursion from sympy import prime def _A189398(n): nlen = len(n) return _A189398(n[:-1])*prime(nlen)**int(n[-1]) if nlen > 1 else 2**int(n) def A189398(n): return _A189398(str(n)) # Chai Wah Wu, Aug 31 2014
Comments