A373902 a(1) = 2; for n > 1, a(n) is the smallest positive number that does not equal a(n-1), shares a factor with a(n-1), and has not appeared as an adjacent term to a(n-1) previously in the sequence.
2, 4, 6, 2, 8, 4, 10, 2, 12, 3, 6, 8, 10, 5, 15, 3, 9, 6, 10, 12, 4, 14, 2, 16, 4, 18, 2, 20, 4, 22, 2, 24, 3, 18, 6, 12, 8, 14, 6, 15, 9, 12, 14, 7, 21, 3, 27, 6, 16, 8, 18, 9, 21, 6, 20, 5, 25, 10, 14, 16, 10, 15, 12, 16, 18, 10, 20, 8, 22, 6, 24, 4, 26, 2, 28, 4, 30, 2, 32, 4, 34, 2, 36, 3
Offset: 1
Examples
a(7) = 10 as a(6) = 4 and, although 2 and 6 share factors with 4, 2 and 4 form a previous adjacent pair, as do 4 and 6. This leaves 10 as the smallest number that shares a factor with 4 while 4 and 10 have not previously appeared as adjacent terms.
Links
- Scott R. Shannon, Table of n, a(n) for n = 1..10000
- Scott R. Shannon, Image of the first 250000 terms. Prime terms are shown in red.
Programs
-
Mathematica
nn = 120; c[_] := {}; a[1] = j = 2; c[2] = {2}; Do[If[PrimePowerQ[j], (k = 1; While[Or[j == # k, CoprimeQ[j, # k], ! FreeQ[c[j], # k]], k++]; k *= #) &[FactorInteger[j][[1, 1]]], k = FactorInteger[j][[1, 1]]; While[Or[j == k, CoprimeQ[j, k], ! FreeQ[c[j], k]], k++] ]; Set[{a[n], c[j], c[k], j}, {k, Union[c[j], {k}], Union[c[k], {j}], k}], {n, 2, nn}]; Array[a, nn] (* Michael De Vlieger, Jun 22 2024 *)
-
Python
from math import gcd from itertools import count, islice def agen(): # generator of terms an, adjacent = 2, {2: set()} while True: yield an A = adjacent[an] m = next(k for k in count(2) if k!=an and gcd(k, an)>1 and k not in A) adjacent[an].add(m) if m not in adjacent: adjacent[m] = set() adjacent[m].add(an) an = m print(list(islice(agen(), 84))) # Michael S. Branicky, Jun 22 2024
Comments