login
An extension of the generalized pentagonal numbers such that every positive integer can be represented as the sum of at most two terms of the sequence.
0

%I #21 Mar 07 2024 08:02:31

%S 0,1,2,5,7,11,12,15,21,22,25,26,35,39,40,49,51,57,67,70,77,87,92,100,

%T 117,120,123,126,145,153,155,173,176,182,186,187,205,210,214,222,228,

%U 241,247,251,260,283,287,301,319,330,345,376,382,392,425,435,442,448

%N An extension of the generalized pentagonal numbers such that every positive integer can be represented as the sum of at most two terms of the sequence.

%C The sequence is defined inductively. Starting from the empty sequence, the terms are added one after the other. A term is added if it is a generalized pentagonal number or if it cannot be represented as the sum of two preceding terms. Note that these exceptions form a proper subsequence of A093519.

%C Thus any positive number can be expressed as the sum of at most two positive terms by Euler's Pentagonal Number Theorem. Every pentagonal number and every generalized pentagonal number is in this sequence.

%H Andreas Enge, William Hart and Fredrik Johansson, <a href="https://arxiv.org/abs/1608.06810">Short addition sequences for theta functions</a>, arXiv:1608.06810 [math.NT], 2016.

%H Burkard Polster (Mathloger), <a href="https://www.youtube.com/watch?v=iJ8pnCO0nTY">The hardest 'What comes next?' (Euler's pentagonal formula)</a>, YouTube video, 2020.

%e 32 = 7 + 25; 195 = 22 + 173.

%p A355774_list := proc(upto) local P, k, issum, isgpn; P := [];

%p isgpn := k -> ormap(n -> 0 = 8*k-(n+irem(n,2))*(3*n+2-irem(n,2)), [$0..k]);

%p issum := k -> ormap(p -> member(k - p, P), P);

%p for k from 0 to upto do

%p if isgpn(k) or not issum(k) then P := [op(P), k] fi od;

%p P end: print(A355774_list(448));

%t isgpn[k_] := AnyTrue[Range[0, k], 0 == 8*k-(#+Mod[#,2])*(3*#+2-Mod[#,2])&];

%t issum[k_] := AnyTrue[P, MemberQ[P, k-#]&];

%t P = {};

%t For[k = 0, k <= 448, k++, If[isgpn[k] || !issum[k], AppendTo[P, k]]];

%t P (* _Jean-François Alcover_, Mar 07 2024, after _Peter Luschny_ *)

%o (Python)

%o def A355774_list(upto: int) -> list[int]:

%o P: list[int] = []

%o for k in range(upto + 1):

%o if any(

%o k == ((n + n % 2) * (3 * n + 2 - n % 2)) >> 3

%o for n in range(k + 1)

%o ) or not any([(k - p) in P for p in P]):

%o P.append(k)

%o return P

%o print(A355774_list(448))

%Y Cf. A000326, A001318, A093519, A100878, A355717, A176747 (same construction with triangular numbers).

%K nonn

%O 0,3

%A _Peter Luschny_, Jul 17 2022