login
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.
6

%I #32 Jan 09 2016 11:54:55

%S 2,4,8,16,32,64,128,256,512,2,6,18,54,162,486,1458,4374,13122,39366,4,

%T 12,36,108,324,972,2916,8748,26244,78732,8,24,72,216,648,1944,5832,

%U 17496,52488,157464,16,48,144,432,1296,3888,11664,34992,104976,314928,32

%N 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.

%C Not the same as A061509: a(n) = A061509(n) for n <= 100; a(101)=2^1*3^0*5^1=10 <> A061509(101)=2^1*3^1=6;

%C a(A052382(n)) = A000079(A000030(a052382(n))) = A061509(A052382(n));

%C a(A002275(n)) = A002110(n): a(n-th rep-unit) = n-th primorial;

%C a(n*A011557(k)) = a(n): trailing zeros don't matter;

%C A001221(a(n)) = A055640(n): number of distinct prime factors of a(n) = number of nonzero digits of n;

%C A001222(a(n)) = A007953(n): number of all prime factors of a(n) = sum of digits of n;

%C a(81312000) = 2^8*3^1*5^3*7^1*11^2*13^0*17^0*19^0 = 81312000, the smallest fixed point, is called the Meertens number.

%H Reinhard Zumkeller, <a href="/A189398/b189398.txt">Table of n, a(n) for n = 1..10000</a>

%H Richard S. Bird, <a href="http://journals.cambridge.org/action/displayAbstract?fromPage=online&amp;aid=44141&amp;fulltextType=RL&amp;fileId=S0956796897002931">Functional Pearl: Meertens number</a>, Journal of Functional Programming 8 (1), Jan 1998, 83-88.

%H Wikipedia, <a href="http://en.wikipedia.org/wiki/Meertens_number">Meertens number</a>

%p a:= n-> `if`(n=0, 1, ithprime(length(n))^irem(n, 10, 'm') *a(m)):

%p seq(a(n), n=1..110); # _Alois P. Heinz_, May 04 2011

%t a[n_] := (p = Prime[Range[Length[d = IntegerDigits[n]]]]; Times @@ (p^d)); Array[a, 50] (* _Jean-François Alcover_, Jan 09 2016 *)

%o (Haskell)

%o import Data.Char (digitToInt)

%o import Data.List (findIndices)

%o a189398 n = product $ zipWith (^) a000040_list (map digitToInt $ show n)

%o -- Two computations of the Meertens number: the first is brute force,

%o meertens = map succ $ findIndices (\x -> a189398 x == x) [1..]

%o -- ... and the second is more efficient, from Bird reference, page 87:

%o meertens' k = [n | (n,g) <- candidates (0,1), n == g] where

%o candidates = concat . map (search pps) . tail . labels ps

%o ps : pps = map (\p -> iterate (p *) 1) $ take k a000040_list

%o search [] x = [x]

%o search (ps:pps) x = x : concat (map (search pps) (labels ps x))

%o labels ps (n,g) = zip (map (10*n +) [0..9]) (chop $ map (g *) ps)

%o chop = takeWhile (< 10^k)

%o -- Time and space required, GHC interpreted, Mac OS X, 2.66 GHz:

%o -- for >head meertens: (466.87 secs, 254780027728 bytes);

%o -- for >meertens' 8: ( 0.28 secs, 62027124 bytes).

%o (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

%o (Python)

%o from sympy import prime

%o from operator import mul

%o from functools import reduce

%o def A189398(n):

%o ....return reduce(mul, (prime(i)**int(d) for i,d in enumerate(str(n),start=1)))

%o # implementation using recursion

%o def _A189398(n):

%o ....nlen = len(n)

%o ....return _A189398(n[:-1])*prime(nlen)**int(n[-1]) if nlen > 1 else 2**int(n)

%o def A189398(n):

%o ....return _A189398(str(n))

%o # _Chai Wah Wu_, Aug 31 2014

%Y Cf. A000040.

%K nonn,base,look

%O 1,1

%A _Reinhard Zumkeller_, May 03 2011