login
A394288
Values taken by the analog of Euler's totient function for Gaussian integers.
2
1, 2, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 52, 56, 60, 64, 72, 80, 88, 96, 100, 104, 108, 112, 120, 128, 136, 144, 148, 156, 160, 172, 176, 180, 192, 196, 200, 208, 216, 224, 228, 232, 240, 256, 268, 272, 276, 280, 288, 292, 296, 312, 316, 320, 336, 344, 348, 352, 360, 372, 384
OFFSET
1,2
COMMENTS
Equivalently, numbers k such that there exists a unit group (Z[i]/(x + yi))* of order k.
For any complex number z, the analog of the Euler product formula for Gaussian integers is N(z)*Product_{p|z} 1 - 1/N(p), where p is a Gaussian prime and N(z) is the norm of z.
Under a multiplication which is not completely multiplicative, the values of Euler's totient function for rationals can be obtained by taking the products of the set {(p-1)*p^(e-1)} over all primes p. The present sequence is generated from the set {(p-1)*p^(r-1), (q^2-1)*(q^2)^(s-1)} = {phi(p^r), J_2(q^s)}, where J_2 is Jordan's totient function, for primes p and q such that p = 2, p == 1 mod 4, and q == 3 mod 4.
The above rules can be generalized to quadratic integer rings which are UFDs: in this case the generating set {(p-1)*p^(r-1), (q^2-1)*(q^2)^(s-1)} is taken over primes p and q where p is either a ramified or split prime, and q is inert. See the Englezou link for a PARI program. Note that the program lst_d(lim, d) generates a subset of the set of totient values of Z[sqrt(d)] for all nonzero integers d; it is only for those d such that Z[sqrt(d)] is a UFD that this subset is equal to the full set.
EXAMPLE
2 is a term since for z = 2 = -i(1 + i)^2, N(-i(1 + i)^2)(1 - 1/N(1 + i)) = 4 * 1/2 = 2.
4 is a term since for z = 2 + i, N(2 + i)(1 - 1/N(2 + i)) = 5 * 4/5 = 4.
8 is a term since for z = 4 - 2i = (2 + i)(1 + i)^2, N(4 + 2i)(1 - 1/N(2 + i))(1 - 1/N(1 + i)) = 20 * 4/5 * 1/2 = 8.
PROG
(PARI) lst(lim) = my(S = Set([1])); forprime(p=2, lim, my(L = List()); if(p==2, for(e=1, oo, my(v = 2^(e-1)); if(v > lim, break); listput(L, v)), if(p%4==1, for(e=1, oo, my(v = p^(e-1)*(p-1)); if(v > lim, break); listput(L, v)), for(e=1, oo, my(v = (p^2)^(e-1)*(p^2-1)); if(v > lim, break); listput(L, v)))); my(T = Set(S)); for(i=1, #S, for(j=1, #L, my(v = S[i]*L[j]); if(v <= lim, T = setunion(T, Set([v]))))); S = T); S
CROSSREFS
KEYWORD
nonn
AUTHOR
Miles Englezou, Apr 13 2026
STATUS
approved