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.

A339979 Coreful Zumkeller numbers: numbers whose set of coreful divisors can be partitioned into two disjoint sets of equal sum.

Original entry on oeis.org

36, 72, 144, 180, 200, 252, 288, 324, 360, 392, 396, 400, 468, 504, 576, 600, 612, 648, 684, 720, 784, 792, 800, 828, 900, 936, 1008, 1044, 1116, 1152, 1176, 1200, 1224, 1260, 1296, 1332, 1368, 1400, 1440, 1476, 1548, 1568, 1584, 1600, 1620, 1656, 1692, 1764
Offset: 1

Views

Author

Amiram Eldar, Dec 25 2020

Keywords

Comments

A coreful divisor d of a number k is a divisor with the same set of distinct prime factors as k, or rad(d) = rad(k), where rad(k) is the largest squarefree divisor of k (A007947).
The coreful perfect numbers (A307958) are a subsequence.

Examples

			36 is a term since its set of coreful divisors, {6, 12, 18, 36}, can be partitioned into the two disjoint sets, {6, 12, 18} and {36}, whose sums are equal: 6 + 12 + 18 = 36.
		

Crossrefs

A307958 is a subsequence.
Subsequence of A308053.
Similar sequences: A083207, A290466, A335197, A335142, A335215, A335218.

Programs

  • Mathematica
    corZumQ[n_] := Module[{r = Times @@ FactorInteger[n][[;; , 1]], d, sum, x}, d = r * Divisors[n/r]; (sum = Plus @@ d) >= 2*n && EvenQ[sum] && CoefficientList[Product[1 + x^i, {i, d}], x][[1 + sum/2]] > 0]; Select[Range[1800], corZumQ]
  • Python
    from itertools import count, islice
    from sympy import primefactors, divisors
    def A339979_gen(startvalue=1): # generator of terms >= startvalue
        for n in count(max(startvalue,1)):
            f = primefactors(n)
            d = [x for x in divisors(n) if primefactors(x)==f]
            s = sum(d)
            if s&1^1 and n<<1<=s:
                d = d[:-1]
                s2, ld = (s>>1)-n, len(d)
                z = [[0 for  in range(s2+1)] for  in range(ld+1)]
                for i in range(1, ld+1):
                    y = min(d[i-1], s2+1)
                    z[i][:y] = z[i-1][:y]
                    for j in range(y,s2+1):
                        z[i][j] = max(z[i-1][j],z[i-1][j-y]+y)
                    if z[i][s2] == s2:
                        yield n
                        break
    A339979_list = list(islice(A339979_gen(),20)) # Chai Wah Wu, Feb 14 2023