oeis.org

A046081 - OEIS

0, 0, 1, 1, 2, 1, 1, 2, 2, 2, 1, 4, 2, 1, 5, 3, 2, 2, 1, 5, 4, 1, 1, 7, 4, 2, 3, 4, 2, 5, 1, 4, 4, 2, 5, 7, 2, 1, 5, 8, 2, 4, 1, 4, 8, 1, 1, 10, 2, 4, 5, 5, 2, 3, 5, 7, 4, 2, 1, 14, 2, 1, 7, 5, 8, 4, 1, 5, 4, 5, 1, 12, 2, 2, 9, 4, 4, 5, 1, 11, 4, 2, 1, 13, 8, 1, 5, 7, 2, 8, 5, 4, 4, 1, 5, 13, 2, 2, 7

COMMENTS

Pythagorean triples including primitive ones and non-primitive ones. For a certain n, it may be a leg or the hypotenuse in either a primitive Pythagorean triple, or a non-primitive Pythagorean triple, or both. - Rui Lin, Nov 02 2019

REFERENCES

A. Beiler, Recreations in the Theory of Numbers. New York: Dover, pp. 116-117, 1966.

FORMULA

From Rui Lin, Nov 02 2019: (Start)

EXAMPLE

From Rui Lin, Nov 02 2019: (Start)

n=25 is the least number which meets all of following cases:

1. 25 is a leg of a primitive Pythagorean triple (25,312,313), so A024361(25)=1;

2. 25 is the hypotenuse of a primitive Pythagorean triple (7,24,25), so A024362(25)=1;

3. 25 is a leg of a non-primitive Pythagorean triple (25,60,65), so A328708(25)=1;

4. 25 is the hypotenuse of a non-primitive Pythagorean triple (15,20,25), so A328712(25)=1;

5. Combination 1. and 3. means A046079(25)=2;

6. Combination 2. and 4. means A046080(25)=2;

7. Combination 1. and 2. means A024363(25)=2;

8. Combination 3. and 4. means A328949(25)=2;

9. Combination of 1., 2., 3., and 4. means A046081(25)=4. (End)

MATHEMATICA

a[1] = 0; a[n_] := Module[{f}, f = Select[FactorInteger[n], Mod[#[[1]], 4] == 1&][[All, 2]]; (DivisorSigma[0, If[OddQ[n], n, n/2]^2]-1)/2 + (Times @@ (2*f+1) - 1)/2]; Array[a, 99] (* Jean-François Alcover, Jul 19 2017 *)

PROG

(PARI) a(n) = {oddn = n/(2^valuation(n, 2)); f = factor(oddn); for (k=1, #f~, if ((f[k, 1] % 4) != 1, f[k, 2] = 0); ); n1 = factorback(f); if (n % 2, (numdiv(n^2)+numdiv(n1^2))/2 -1, (numdiv((n/2)^2)+numdiv(n1^2))/2 -1); } \\ Michel Marcus, Mar 07 2016

(Python)

from sympy import factorint

def a(n):

p1, p2 = 1, 1

for i in factorint(n).items():

if i[0] % 4 == 1:

p2 *= i[1] * 2 + 1

p1 *= i[1] * 2 + 1 - (2 if i[0] == 2 else 0)

return (p1 + p2)//2 - 1

print([a(n) for n in range(1, 100)]) # Oleg Sorokin, Mar 02 2023