OFFSET
1,4
COMMENTS
In the Cartesian plane, let r(p,q) denote the rotation with center origin and angle associated to slope p/q (p: number of units upwards, q: number of units towards the right).
Let R(p,q) be the square of area p^2 + q^2 = R^2, with vertices (0,0), (0,R), (R,R), (R,0).
The natural unit squares (i.e., the (a,a+1) X (b,b+1) Cartesian products, with a and b integers) are transformed by r(p,q) into rotated unit squares.
a(p,q) is the number of rotated unit squares that fully land inside R(p,q).
LINKS
Luc Rousseau, Illustration for p=6, q=4
FORMULA
EXAMPLE
Table begins:
0 1 4 9 16 25 ...
1 4 5 12 17 28 ...
4 5 12 13 20 33 ...
9 12 13 24 25 36 ...
16 17 20 25 40 41 ...
25 28 33 36 41 60 ...
... ... ... ... ... ... ...
MATHEMATICA
A[p_, q_] := p^2 + q^2 - 2*p - 2*q + 2*GCD[p, q];
(* or, checking without the formula: *)
okQ[{a_, b_}, p_, q_] := Module[{r2 = p^2 + q^2}, 0 <= a*q - b*p <= r2 && 0 <= a*p + b*q <= r2 && 0 <= a*q - b*p + q <= r2 && 0 <= a*p + b*q + p <= r2 && 0 <= a*q - (b + 1)*p <= r2 && 0 <= a*p + b*q + q <= r2 && 0 <= (a + 1)*q - (b + 1)*p <= r2 && 0 <= a*p + b*q + p + q <= r2];
A[p_, q_] := Module[{r}, r = Reduce[okQ[{a, b}, p, q], {a, b}, Integers]; If[r[[0]] === And, 1, Length[r]]];
Flatten[Table[A[p - q + 1, q], {p, 1, 11}, {q, 1, p}]] (* Jean-François Alcover, Jun 17 2017 *)
PROG
(PARI)
a(p, q)=p^2+q^2-2*p-2*q+2*gcd(p, q)
for(n=2, 12, for(p=1, n-1, {q=n-p; print(a(p, q))}))
CROSSREFS
KEYWORD
AUTHOR
Luc Rousseau, Jun 16 2017
STATUS
approved