A261684 Array T(n,k) = lunar product n*k (n >= 0, k >= 0) read by antidiagonals.
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
Examples
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 ... ....
Links
- N. J. A. Sloane, Table of n, a(n) for n = 0..20099
- 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.
- Index entries for sequences related to dismal (or lunar) arithmetic
Crossrefs
Programs
-
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:
Comments