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.

A007620 Numbers m such that every k <= m is a sum of proper divisors of m (for m>1).

Original entry on oeis.org

1, 6, 12, 18, 20, 24, 28, 30, 36, 40, 42, 48, 54, 56, 60, 66, 72, 78, 80, 84, 88, 90, 96, 100, 104, 108, 112, 120, 126, 132, 140, 144, 150, 156, 160, 162, 168, 176, 180, 192, 196, 198, 200, 204, 208, 210, 216, 220, 224, 228, 234, 240, 252, 260, 264, 270, 272, 276, 280, 288, 294, 300, 304, 306
Offset: 1

Views

Author

Keywords

Comments

This sequence was formerly called "practical numbers (second definition)" because it was thought this was the definition used in Srinivasan's original paper. However, in Srinivasan's paper, one can read that his definition is "k < m". Stewart proves that Srinivasan's definition is equivalent to requiring every k <= sigma(m) be the sum of distinct divisors of m. This sequence is a subsequence of the practical numbers, A005153. - T. D. Noe, Apr 02 2010
A005153 without terms larger than 1 that are almost-perfect numbers (numbers k such that sigma(k) = 2*k-1, the only known such numbers are the powers of 2, A000079). - Amiram Eldar, Apr 07 2023

References

  • Ross Honsberger, Mathematical Gems, M.A.A., 1973, p. 113.
  • N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).

Crossrefs

Cf. A005153 (first definition).

Programs

  • Haskell
    a007620 n = a007620_list !! (n-1)
    a007620_list = 1 : filter (\x -> all (p $ a027751_row x) [1..x]) [2..]
       where p _  0 = True
             p [] _ = False
             p ds'@(d:ds) m = d <= m && (p ds (m - d) || p ds m)
    -- Reinhard Zumkeller, Feb 23 2014
    
  • Mathematica
    DeleteCases[ A005835, q_/; (Count[ CoefficientList[ Series[ Times@@( (1+z^#)& /@ Divisors[ q ] ), {z, 0, q} ], z ], 0 ]>0) ] (* Wouter Meeussen *)
  • Python
    from itertools import count, islice
    from sympy import divisors
    def A007620_gen(startvalue=1): # generator of terms >= startvalue
        for m in count(max(startvalue,1)):
            if m == 1:
                yield 1
            else:
                c = {0}
                for d in divisors(m,generator=True):
                    if d < m:
                        c |= {a+d for a in c}
                if all(a in c for a in range(m+1)):
                    yield m
    A007620_list = list(islice(A007620_gen(),30)) # Chai Wah Wu, Jul 06 2023