cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A355774 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.

Original entry on oeis.org

0, 1, 2, 5, 7, 11, 12, 15, 21, 22, 25, 26, 35, 39, 40, 49, 51, 57, 67, 70, 77, 87, 92, 100, 117, 120, 123, 126, 145, 153, 155, 173, 176, 182, 186, 187, 205, 210, 214, 222, 228, 241, 247, 251, 260, 283, 287, 301, 319, 330, 345, 376, 382, 392, 425, 435, 442, 448
Offset: 0

Views

Author

Peter Luschny, Jul 17 2022

Keywords

Comments

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.
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.

Examples

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

Crossrefs

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

Programs

  • Maple
    A355774_list := proc(upto) local P, k, issum, isgpn; P := [];
    isgpn := k -> ormap(n -> 0 = 8*k-(n+irem(n,2))*(3*n+2-irem(n,2)), [$0..k]);
    issum := k -> ormap(p -> member(k - p, P), P);
    for k from 0 to upto do
        if isgpn(k) or not issum(k) then P := [op(P), k] fi od;
    P end: print(A355774_list(448));
  • Mathematica
    isgpn[k_] := AnyTrue[Range[0, k], 0 == 8*k-(#+Mod[#,2])*(3*#+2-Mod[#,2])&];
    issum[k_] := AnyTrue[P, MemberQ[P, k-#]&];
    P = {};
    For[k = 0, k <= 448, k++, If[isgpn[k] || !issum[k], AppendTo[P, k]]];
    P (* Jean-François Alcover, Mar 07 2024, after Peter Luschny *)
  • Python
    def A355774_list(upto: int) -> list[int]:
        P: list[int] = []
        for k in range(upto + 1):
            if any(
                k == ((n + n % 2) * (3 * n + 2 - n % 2)) >> 3
                for n in range(k + 1)
            ) or not any([(k - p) in P for p in P]):
                P.append(k)
        return P
    print(A355774_list(448))