OFFSET
1,3
COMMENTS
The binary digits of a(n) encode the prime factorization of A007913(n), where the i-th digit from the right is 1 if and only if prime(i) divides A007913(n), otherwise 0. - Robert Israel, Jan 12 2015
Old name: a(1) = 0; a(A000040(n)) = 2^(n-1), and a(n*m) = a(n) XOR a(m).
XOR is the bitwise exclusive or operation (A003987).
a(k^2) = 0 for a natural number k.
Equivalently, the i-th binary digit from the right is 1 iff prime(i) divides n an odd number of times, otherwise zero. - Ethan Beihl, Oct 15 2016
When a polynomial with nonnegative integer coefficients is encoded with the prime factorization of n (e.g., as in A206296, A260443, with scheme explained in A206284), then A048675(n) gives the evaluation of that polynomial at x=2. This sequence is otherwise similar, except the polynomial is evaluated over the field GF(2), which implies also that all its coefficients are essentially reduced modulo 2. - Antti Karttunen, Dec 11 2015
Squarefree numbers (A005117) give the positions k where a(k) = A048675(k). - Antti Karttunen, Oct 29 2016
From Peter Munn, Jun 07 2021: (Start)
When we encode polynomials with nonnegative integer coefficients as described by Antti Karttunen above, polynomial addition is represented by integer multiplication, multiplication is represented by A297845(.,.), and this sequence represents a surjective semiring homomorphism to polynomials in GF(2)[x] (encoded as described in A048720). The mapping of addition operations by this homomorphism is part of the sequence definition: "a(n*m) = a(n) XOR a(m)". The mapping of multiplication is given by a(A297845(n, k)) = A048720(a(n), a(k)).
In a related way, A329329 defines a representation of a different set of polynomials as positive integers, namely polynomials in GF(2)[x,y].
Let P_n(x,y) denote the polynomial represented, as in A329329, by n >= 1. If 0 is substituted for y in P_n(x,y), we get a polynomial P'_n(x,y) (in which y does not appear, of course) that is equivalent to a polynomial P'_n(x) in GF(2)[x]. a(n) is the integer encoding of P'_n(x) (described in A048720).
Viewed as above, this sequence represents another surjective homomorphism, a homomorphism between polynomial rings, with A329329(.,.)/A059897(.,.) and A048720(.,.)/A003987(.,.) as the respective ring operations.
a(n) can be composed as a(n) = A048675(A007913(n)) and the effect of the A007913(.) component corresponds to different operations on the respective polynomial domains of the two homomorphisms described above. In the first homomorphism, coefficients are reduced modulo 2; in the second, 0 is substituted for y. This is illustrated in the examples.
(End)
LINKS
Peter Kagey, Table of n, a(n) for n = 1..5000
Eric Weisstein's World of Mathematics, Squarefree Part
Wikipedia, Polynomial ring
FORMULA
a(1) = 0; for n > 1, if n is a prime, a(n) = 2^(A000720(n)-1), otherwise a(A020639(n)) XOR a(A032742(n)). [After the definition.] - Antti Karttunen, Dec 11 2015
For n > 1, this simplifies to: a(n) = 2^(A055396(n)-1) XOR a(A032742(n)). [Where A055396(n) gives the index of the smallest prime dividing n and A032742(n) gives the largest proper divisor of n. Cf. a similar formula for A048675.]
Other identities and observations. For all n >= 0:
From Antti Karttunen, Dec 11 2015, Sep 19 & Oct 27 2016, Feb 15 2021: (Start)
a(n) = a(A007913(n)). [The result depends only on the squarefree part of n.]
(End)
From Peter Munn, Jan 09 2021 and Apr 20 2021: (Start)
a(A003961(n)) = 2 * a(n).
a(A331590(n, k)) = a(n) + a(k).
a(A334747(n)) = a(n) + 1.
(End)
EXAMPLE
a(3500) = a(2^2 * 5^3 * 7) = a(2) XOR a(2) XOR a(5) XOR a(5) XOR a(5) XOR a(7) = 1 XOR 1 XOR 4 XOR 4 XOR 4 XOR 8 = 0b0100 XOR 0b1000 = 0b1100 = 12.
From Peter Munn, Jun 07 2021: (Start)
The examples in the table below illustrate the homomorphisms (between polynomial structures) represented by this sequence.
The staggering of the rows is to show how the mapping n -> A007913(n) -> A048675(A007913(n)) = a(n) relates to the encoded polynomials, as not all encodings are relevant at each stage.
For an explanation of each polynomial encoding, see the sequence referenced in the relevant column heading. (Note also that A007913 generates squarefree numbers, and with these encodings, all squarefree numbers represent equivalent polynomials in N[x] and GF(2)[x,y].)
|<----- encoded polynomials ----->|
n A007913(n) a(n) | N[x] GF(2)[x,y] GF(2)[x]|
--------------------------------------------------------------
24 x+3 x+y+1
6 x+1 x+1
3 x+1
--------------------------------------------------------------
36 2x+2 xy+y
1 0 0
0 0
--------------------------------------------------------------
60 x^2+x+2 x^2+x+y
15 x^2+x x^2+x
6 x^2+x
--------------------------------------------------------------
90 x^2+2x+1 x^2+xy+1
10 x^2+1 x^2+1
5 x^2+1
--------------------------------------------------------------
This sequence is a left inverse of A019565. A019565(.) maps a(n) to A007913(n) for all n, effectively reversing the second stage of the mapping from n to a(n) shown above. So, with the encodings used here, A019565(.) represents each of two injective homomorphisms that map polynomials in GF(2)[x] to equivalent polynomials in N[x] and GF(2)[x,y] respectively.
(End)
MAPLE
f:= proc(n)
local F, f;
F:= select(t -> t[2]::odd, ifactors(n)[2]);
add(2^(numtheory:-pi(f[1])-1), f = F)
end proc:
seq(f(i), i=1..100); # Robert Israel, Jan 12 2015
MATHEMATICA
a[1] = 0; a[n_] := a[n] = If[PrimeQ@ n, 2^(PrimePi@ n - 1), BitXor[a[#], a[n/#]] &@ FactorInteger[n][[1, 1]]]; Array[a, 66] (* Michael De Vlieger, Sep 16 2016 *)
PROG
(Ruby)
require 'prime'
def f(n)
a = 0
reverse_primes = Prime.each(n).to_a.reverse
reverse_primes.each do |prime|
a <<= 1
while n % prime == 0
n /= prime
a ^= 1
end
end
a
end
(Scheme, with memoizing-macro definec)
(definec (A248663 n) (cond ((= 1 n) 0) ((= 1 (A010051 n)) (A000079 (- (A000720 n) 1))) (else (A003987bi (A248663 (A020639 n)) (A248663 (A032742 n)))))) ;; Where A003987bi computes bitwise-XOR as in A003987.
;; Alternatively:
(definec (A248663 n) (cond ((= 1 n) 0) (else (A003987bi (A000079 (- (A055396 n) 1)) (A248663 (A032742 n))))))
;; Antti Karttunen, Dec 11 2015
(PARI) A248663(n) = vecsum(apply(p -> 2^(primepi(p)-1), factor(core(n))[, 1])); \\ Antti Karttunen, Feb 15 2021
(Haskell)
import Data.Bits (xor)
a248663 = foldr (xor) 0 . map (\i -> 2^(i - 1)) . a112798_row
-- Peter Kagey, Sep 16 2016
(Python)
from sympy import factorint, primepi
from sympy.ntheory.factor_ import core
def a048675(n):
f=factorint(n)
return 0 if n==1 else sum([f[i]*2**(primepi(i) - 1) for i in f])
def a(n): return a048675(core(n)) print [a(n) for n in range(1, 101)] # Indranil Ghosh, Jun 21 2017
CROSSREFS
A homomorphism from A297845/A003991 and from A329329/A059897 to A048720/A003987, mapping A206296 to A168081, A260443 to A264977, A265408 to A265407, A275734 to A275808, A276076 to A276074, A283477 to A006068.
A left inverse of A019565.
Other sequences used to express relationship between terms of this sequence: A003961, A007913, A331590, A334747.
A087207 is the analogous sequence with OR.
A000290 gives the positions of zeros.
KEYWORD
nonn,base
AUTHOR
Peter Kagey, Jan 11 2015
EXTENSIONS
New name from Peter Munn, Nov 01 2023
STATUS
approved