A225592 a(n) = size of the network of triangular(n). Distinct triangular numbers T and R are directly connected if R = T*k, and k>0 is a triangular number less than T. Numbers belong to the same network if there is a chain of direct connections between them.
1, 1, 1, 1, 2, 7, 1, 1, 2, 8, 2, 3, 7, 7, 1, 1, 1, 5, 4, 7, 2, 3, 4, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 8, 7, 2, 4, 6, 3, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 8, 1, 1, 1, 2, 1, 4, 1, 2, 2, 1, 1, 1, 3, 2, 3, 1, 1, 1, 1, 4, 3, 2, 5, 2, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 7, 2
Offset: 1
Keywords
Examples
Triangular(6) = 21 belongs to the network with the following members: 21, 105, 210, 630, 19110, 25200, 145530. So a(6) = 7. Triangular(133) = 8911 belongs to the network with the following members: 8911, 810901, 28158760, 3104129028, 328779810450, 543633020560, 18474540054600, 45742477468287600, 1553903798634573750. So a(133) = 9.
Programs
-
Python
def isTriangular(a): sr = 1 << (a.bit_length() >> 1) a += a while a < sr*(sr+1): sr>>=1 b = sr>>1 while b: s = sr+b if a >= s*(s+1): sr = s b>>=1 return (a==sr*(sr+1)) network = [0]*1000 readPos = writePos = 0 def addConnection(R): global writePos if isTriangular(R): for j in range(readPos): if network[j]==R: return network[writePos] = R writePos += 1 for i in range(1, 1000000): readPos, writePos = 0, 1 network[0] = i*(i+1)//2 while readPos < writePos: T = network[readPos] readPos += 1 n = k = 3 while k < T: addConnection(T*k) if T % k == 0 and T//k > k: addConnection(T//k) k += n n += 1 print(readPos, end=', ')