A192274 Numbers which are both Zumkeller numbers and anti-Zumkeller numbers.
42, 70, 78, 88, 126, 160, 176, 228, 234, 258, 270, 280, 308, 342, 350, 368, 378, 380, 390, 396, 402, 438, 448, 462, 468, 490, 500, 522, 532, 540, 552, 558, 560, 572, 580, 588, 608, 618, 620, 630, 644, 650, 690, 702, 732, 756, 770, 780, 798, 812, 822, 852, 858
Offset: 1
Keywords
Examples
270-> divisors: 1,2,3,5,6,9,10,15,18,27,30,45,54,90,135,270; sigma(270)/2=360; 1+2+3+5+6+9+10+15+18+27+30+45+54+135=90+270=360. 270-> anti-divisors: 4,7,11,12,20,36,49,60,77,108,180; sigma*(270)/2=282; 4+7+11+20+60+180=12+36+49+77+108=282.
Links
- Chai Wah Wu, Table of n, a(n) for n = 1..10000
Programs
-
Maple
with(combstruct); with(numtheory); P:=proc(i) local S,R,Stop,Comb,a,b,c,d,k,m,n,s; for n from 3 to i do a:={}; for k from 2 to n-1 do if abs((n mod k)- k/2) < 1 then a:=a union {k}; fi; od; b:=nops(a); c:=op(a); s:=0; if b>1 then for k from 1 to b do s:=s+c[k]; od; else s:=c; fi; if (modp(s,2)=0 and 2*n<=s) then S:=1/2*s-n; R:=select(m->m<=S,[c]); Stop:=false; Comb:=iterstructs(Combination(R)); while not (finished(Comb) or Stop) do Stop:=add(d,d=nextstruct(Comb))=S; od; if Stop then s:=sigma(n); if (modp(s,2)=0 and 2*n<=s) then S:=1/2*s-n; R:=select(m->m<=S,divisors(n)); Stop:=false; Comb:=iterstructs(Combination(R)); while not (finished(Comb) or Stop) do Stop:=add(d,d=nextstruct(Comb))=S; od; if Stop then print(n); fi; fi; fi; fi; od; end: P(10000);
-
Python
from sympy import divisors from sympy.combinatorics.subsets import Subset def antidivisors(n): return [2*d for d in divisors(n) if n > 2*d and n % (2*d)] + \ [d for d in divisors(2*n-1) if n > d >=2 and n % d] + \ [d for d in divisors(2*n+1) if n > d >=2 and n % d] for n in range(1, 10**3): d = divisors(n) s = sum(d) if not s % 2 and max(d) <= s/2: for x in range(1, 2**len(d)): if sum(Subset.unrank_binary(x, d).subset) == s/2: d = antidivisors(n) s = sum(d) if not s % 2 and max(d) <= s/2: for x in range(1, 2**len(d)): if sum(Subset.unrank_binary(x, d).subset) == s/2: print(n, end=', ') break break # Chai Wah Wu, Aug 14 2014
-
Python
from sympy import divisors import numpy as np A192274 = [] for n in range(3,10**3): d = divisors(n) s = sum(d) if not s % 2 and 2*n <= s: d.remove(n) s2, ld = int(s/2-n), len(d) z = np.zeros((ld+1,s2+1),dtype=int) for i in range(1,ld+1): y = min(d[i-1],s2+1) z[i,range(y)] = z[i-1,range(y)] z[i,range(y,s2+1)] = np.maximum(z[i-1,range(y,s2+1)],z[i-1,range(0,s2+1-y)]+y) if z[i,s2] == s2: d2 = [2*x for x in d if n > 2*x and n % (2*x)] + \ [x for x in divisors(2*n-1) if n > x >=2 and n % x] + \ [x for x in divisors(2*n+1) if n > x >=2 and n % x] s, dmax = sum(d2), max(d2) if not s % 2 and 2*dmax <= s: d2.remove(dmax) s2, ld = int(s/2-dmax), len(d2) z = np.zeros((ld+1,s2+1),dtype=int) for i in range(1,ld+1): y = min(d2[i-1],s2+1) z[i,range(y)] = z[i-1,range(y)] z[i,range(y,s2+1)] = np.maximum(z[i-1,range(y,s2+1)],z[i-1,range(0,s2+1-y)]+y) if z[i,s2] == s2: A192274.append(n) break break # Chai Wah Wu, Aug 19 2014
Extensions
Corrected entries and comment by Chai Wah Wu, Aug 13 2014
Comments