OFFSET
1,1
COMMENTS
The zeros correspond to integers that cannot be written as a product of two numbers <= n. These holes reflect gaps in divisor pairs within the n X n box.
Let A(n,q,r) = #{(i,j) : 1 <= i,j <= n and i*j = q*n + r}, with 0 <= r < n. Then T(n,k) = 1 iff A(n,floor(k/n), k mod n) > 0.
LINKS
Paolo Xausa, Table of n, a(n) for n = 1..14910 (rows 1..35 of the triangle, flattened).
Frédéric D. W. Heidenthal-König, The Support of the Euclidean Decomposition of the Multiplication Table, Zenodo, 2026.
Frédéric D. W. Heidenthal-König, Motion and Animation in Multiplication, Zenodo, 2026.
Frédéric D. W. Heidenthal-König, Trace across Bases, Zenodo, 2026.
Frédéric D. W. Heidenthal-König, Square-grid display of the positive-indexed support sequence for n=256.
Frédéric D. W. Heidenthal-König, Interactive visualization of the support rows arranged as n X n bitmaps.
FORMULA
T(n,k) = 1 if k = a*b for some integers 1 <= a,b <= n, otherwise 0, for 1 <= k <= n^2.
Equivalently, T(n,k) = 1 iff k has a divisor d with 1 <= d <= n and k/d <= n.
Sum_{k=1..n^2} T(n,k) = #{a*b : 1 <= a,b <= n} = A027424(n).
Sum_{k=1..n^2} k * T(n,k) = A321165(n). - Alois P. Heinz, Mar 06 2026
EXAMPLE
Rows for n = 1 to 6:
n=1: 1;
n=2: 1, 1, 0, 1;
n=3: 1, 1, 1, 1, 0, 1, 0, 0, 1;
n=4: 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1;
n=5: 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1;
n=6: 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1.
MAPLE
T:= (n, k)-> `if`(ormap(d-> max(d, k/d)<=n, numtheory[divisors](k)), 1, 0):
seq(seq(T(n, k), k=1..n^2), n=1..6); # Alois P. Heinz, Mar 06 2026
MATHEMATICA
A394016[n_, k_] := Boole[AnyTrue[Divisors[k], # <= n && k <= n*# &]];
Table[A394016[n, k], {n, 6}, {k, n^2}] (* Paolo Xausa, Mar 29 2026 *)
PROG
(Python)
def row(n):
r = []
for k in range(1, n*n + 1):
found = 0
for a in range(1, n+1):
if k % a == 0 and k//a <= n:
found = 1
break
r.append(found)
return r
# triangle
a = []
for n in range(1, 6):
a.extend(row(n))
print(a)
(Python)
import numpy as np
n = 256
row = np.zeros(n*n, dtype=np.uint8)
for a in range(1, n+1):
row[a-1:a*n:a] = 1 # memory stride
grid = row.reshape(n, n)
CROSSREFS
KEYWORD
nonn,tabf,changed
AUTHOR
Frédéric D. W. Heidenthal-König, Mar 06 2026
STATUS
approved
