%I #17 Dec 04 2021 12:34:07
%S 12,3,45,6,78,9,1011,12,1314,15,1617,18,192,0,2,12,2,2,32,4,2,52,6,2,
%T 72,8,2,930,3,132,3,3,3,435,3,6,3,738,3,9,4041,42,4,34,4,4,54,6,4,74,
%U 8,4,950,5,15,25,35,45,5,5,65,75,85,960,6,16,2,6,3,6
%N Concatenate the natural numbers, then partition into minimal strings so that adjacent terms have a common divisor greater than 1.
%C 00 -> 0 is not allowed, else all digits will not appear in the concatenation of terms. For example, a(198)..a(201) = 198, 19920, 0, 2 and not 198, 192, 0, 2. - _Michael S. Branicky_, Dec 03 2021
%H Michael S. Branicky, <a href="/A258227/b258227.txt">Table of n, a(n) for n = 1..10000</a> (24 terms corrected in terms 1..10000 from Reinhard Zumkeller)
%F GCD(a(n), a(n+1)) > 1.
%e . a(n) | 12,3,45,6,78,9,1011,12,1314,15,1617,18,192,0,2,12,2,2,32,4,2,52
%e --------+----------------------------------------------------------------
%e . gcd | 3 3 3 6 3 3 3 6 3 3 3 6 192 2 2 2 2 2 4 2 2 .
%o (Haskell)
%o a258227 n = a258227_list !! (n-1)
%o a258227_list = f 12 1 (map toInteger $ tail a007376_list) where
%o f x y (d:ds) | gcd x y > 1 = y : f y d ds
%o | otherwise = f x (10 * y + d) ds
%o (Python)
%o from math import gcd
%o from itertools import count
%o def diggen():
%o for k in count(1): yield from list(map(int, str(k)))
%o def aupton(terms):
%o g = diggen()
%o alst, aset = [12], {12}
%o _, _, nxtd, nxtnxtd = next(g), next(g), next(g), next(g)
%o for n in range(2, terms+1):
%o an, nxtd, nxtnxtd = nxtd, nxtnxtd, next(g)
%o while gcd(an, alst[-1]) == 1 or nxtd == nxtnxtd == 0:
%o an, nxtd, nxtnxtd = int(str(an) + str(nxtd)), nxtnxtd, next(g)
%o alst.append(an); aset.add(an)
%o return alst
%o print(aupton(70)) # _Michael S. Branicky_, Dec 03 2021
%Y Cf. A002782, A007376.
%K nonn,base
%O 1,1
%A _Reinhard Zumkeller_, May 23 2015