login
Approximations up to 2^n for the 2-adic integer Product_{k>=1} (2^k-1)!!.
1

%I #34 May 09 2026 12:46:07

%S 0,1,3,3,11,11,11,11,139,139,651,1675,1675,5771,5771,5771,5771,71307,

%T 71307,333451,857739,1906315,1906315,6100619,14489227,14489227,

%U 14489227,14489227,148706955,417142411,954013323,954013323,3101496971,7396464267,7396464267,24576333451

%N Approximations up to 2^n for the 2-adic integer Product_{k>=1} (2^k-1)!!.

%C Proposition. We have (2^k-1)!! == 1 (mod 2^k) for k >= 3.

%C Proof. Write d=2^(k-2), then (Z/2^kZ)* is generated by 5 (order d) and -1 (order 2), and so 1*3*...*(2^k-1) == Product_{r=0..d-1} Product_{s=0,1} (-1)^s*5^r = 5^(d(d-1)) == 1 (mod 2^k).

%C Corollary. The infinite product Product_{k>=1} (2^k-1)!! converges in the ring of 2-adic integers.

%C Let C(m) be the m-th Catalan number. Then C(2^(n-1)-1) = (2^n-3)!!/Product_{k=1..n-1} (2^k-1)!! == -1/Product_{k=1..n-1} (2^k-1)!! (mod 2^n). As a result, we have A178854(n) == C(2^(n-1)-1) == -1/a(n) (mod 2^n), and lim_{n->oo} C(2^n-1) = -1/Prod_{k>=1} (2^k-1)!! in the ring of 2-adic integers.

%C The fact that (2^(k+1)-1)!! == (2^k-1)!!^2 (mod 2^(3*k-1)) (see link below) for k >= 2 can be used to simplify calculations.

%H Chai Wah Wu, <a href="/A395199/b395199.txt">Table of n, a(n) for n = 0..125</a>

%H Jianing Song, <a href="/A069954/a069954.pdf">Proof that v2((2^(k+1)-1)!!-(2^k-1)!!^2) = 3*k-1</a>.

%F a(n) = (Product_{k=1..n-1} (2^k-1)!!) mod 2^n for n != 2.

%e a(10) = (1!!*3!!*7!!*15!!*31!!*63!!*127!!*255!!*511!) mod 1024 = 651.

%o (PARI) a(n) = {

%o if(n<=2, return([0,1,3][n+1]));

%o my(d=n\3, v=vector(d), k=Mod(1,1<<n), Prod); for(i=1, d, for(j=1<<(i-1)+1, 1<<i, k*=(2*j-1)); v[i]=k); \\ v[i] = (2^(i+1)-1)!! mod 2^n for 1 <= i <= d

%o Prod=vecprod(v); last=v[d]; for(i=d+2, n-1, last=last^2; Prod*=last); lift(Prod);

%o }

%o (Python)

%o def A395199(n):

%o if n == 0: return 0

%o if n == 2: return 3

%o m = (1<<n)-1

%o def f(k):

%o if k == 1:

%o return 1

%o else:

%o c = f(k-1)

%o if 3*(k-1)>n:

%o return c*c&m

%o else:

%o for i in range((1<<k-1)+1,1<<k,2):

%o c = c*i&m

%o return c

%o c = 1

%o for k in range(1,n):

%o c = c*f(k)&m

%o return c # _Chai Wah Wu_, Apr 25 2026

%Y Cf. A178854.

%K nonn

%O 0,3

%A _Jianing Song_, Apr 15 2026