login
a(n) = smallest divisor d of n that occurs earlier in the sequence fewer than d times.
6

%I #14 Oct 14 2022 16:25:57

%S 1,2,3,2,5,3,7,4,3,5,11,4,13,7,5,4,17,6,19,4,7,11,23,6,5,13,9,7,29,5,

%T 31,8,11,17,7,6,37,19,13,8,41,6,43,11,9,23,47,6,7,10,17,13,53,6,11,7,

%U 19,29,59,10,61,31,9,8,13,11,67,17,23,10,71,8,73,37,15,19,11,13,79,8,9,41,83

%N a(n) = smallest divisor d of n that occurs earlier in the sequence fewer than d times.

%C Agrees with A033677 for the first 19 and many further terms; A095787 gives those n for which A033677 and the present sequence disagree.

%H Rémy Sigrist, <a href="/A095163/b095163.txt">Table of n, a(n) for n = 1..10000</a>

%F a(n) >= n^(1/3). - _Charles R Greathouse IV_, Oct 14 2022

%e For n = 12 we have divisors 1, 2, 3, 4, 6, 12; 1 occurs earlier once, 2 occurs earlier twice, 3 occurs earlier 3 times, but 4 occurs earlier only once, hence a(12) = 4.

%t nn = 120; c[_] = 0; Do[k = SelectFirst[Divisors[n], c[#] < # &]; a[n] = k; c[k]++, {n, nn}]; Array[a, nn] (* _Michael De Vlieger_, Oct 14 2022 *)

%o (PARI) {m=83;v=vector(m);for(n=1,m,d=divisors(n);j=1;while(v[d[j]]>=d[j],j++);print1(d[j],",");v[d[j]]=v[d[j]]+1)}

%o (Python)

%o from sympy import divisors

%o from collections import Counter

%o from itertools import count, islice

%o def agen():

%o c = Counter()

%o for n in count(1):

%o an = next(d for d in divisors(n) if c[d] < d)

%o c[an] += 1

%o yield an

%o print(list(islice(agen(), 83))) # _Michael S. Branicky_, Oct 14 2022

%Y Cf. A033677, A095787, A095161, A095162, A095164, A095165.

%K nonn

%O 1,2

%A _Amarnath Murthy_, Jun 01 2004

%E Edited and extended by _Klaus Brockhaus_ Jun 05 2004 and Jun 09 2004