cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

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.

Original entry on oeis.org

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

Views

Author

Scott R. Shannon, Jun 22 2024

Keywords

Comments

See A371618 for the indices where the primes first appear.

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.
		

Crossrefs

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