login
A261684
Array T(n,k) = lunar product n*k (n >= 0, k >= 0) read by antidiagonals.
3
0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 2, 1, 0, 0, 1, 2, 2, 1, 0, 0, 1, 2, 3, 2, 1, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 1, 2, 3, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 0, 10, 2, 3, 4, 5, 5, 4, 3, 2, 10, 0, 0, 11, 10, 3, 4, 5, 6, 5, 4, 3, 10, 11, 0
OFFSET
0,13
COMMENTS
See A087061 for definition. Note that 0+x = x and 9*x = x for all x.
LINKS
D. Applegate, C program for lunar arithmetic and number theory [Note: we have now changed the name from "dismal arithmetic" to "lunar arithmetic" - the old name was too depressing]
D. Applegate, M. LeBrun and N. J. A. Sloane, Dismal Arithmetic [Note: we have now changed the name from "dismal arithmetic" to "lunar arithmetic" - the old name was too depressing]
Brady Haran and N. J. A. Sloane, Primes on the Moon (Lunar Arithmetic), Numberphile video, Nov 2018.
EXAMPLE
Lunar multiplication table begins:
0 0 0 0 0 0 ...
0 1 1 1 1 1 ...
0 1 2 2 2 2 ...
0 1 2 3 3 3 ...
0 1 2 3 4 4 ...
0 1 2 3 4 5 ...
....
MAPLE
# convert decimal to string:
rec := proc(n) local t0, t1, e, l; if n <= 0 then RETURN([[0], 1]); fi; t0 := n mod 10; t1 := (n-t0)/10; e := [t0]; l := 1; while t1 <> 0 do t0 := t1 mod 10; t1 := (t1-t0)/10; l := l+1; e := [op(e), t0]; od; RETURN([e, l]); end;
# convert string to decimal:
cer := proc(ep) local i, e, l, t1; e := ep[1]; l := ep[2]; t1 := 0; if l <= 0 then RETURN(t1); fi; for i from 1 to l do t1 := t1+10^(i-1)*e[i]; od; RETURN(t1); end;
# lunar addition:
dadd := proc(m, n) local i, r1, r2, e1, e2, l1, l2, l, l3, t0; r1 := rec(m); r2 := rec(n); e1 := r1[1]; e2 := r2[1]; l1 := r1[2]; l2 := r2[2]; l := max(l1, l2); l3 := min(l1, l2); t0 := array(1..l); for i from 1 to l3 do t0[i] := max(e1[i], e2[i]); od; if l>l3 then for i from l3+1 to l do if l1>l2 then t0[i] := e1[i]; else t0[i] := e2[i]; fi; od; fi; cer([t0, l]); end;
# lunar multiplication:
dmul := proc(m, n) local k, i, j, r1, r2, e1, e2, l1, l2, l, t0; r1 := rec(m); r2 := rec(n); e1 := r1[1]; e2 := r2[1]; l1 := r1[2]; l2 := r2[2]; l := l1+l2-1; t0 := array(1..l); for i from 1 to l do t0[i] := 0; od; for i from 1 to l2 do for j from 1 to l1 do k := min(e2[i], e1[j]); t0[i+j-1] := max(t0[i+j-1], k); od; od; cer([t0, l]); end;
# to produce the b-file:
M:=199; c:=0; for n from 0 to M do for k from 0 to n do lprint(c, dmul(n-k, k)); c:=c+1; od: od:
CROSSREFS
Cf. A087061 (addition).
See A087062 for a version that excludes the zero row and column.
Similar to but different from A003983.
Sequence in context: A356969 A342955 A004197 * A048571 A025880 A058755
KEYWORD
AUTHOR
N. J. A. Sloane, Sep 06 2015
STATUS
approved