login
Number of subsets of {1..n} whose harmonic mean is an integer.
6

%I #43 Dec 02 2021 20:25:23

%S 1,2,3,4,5,12,13,14,15,18,19,26,27,30,53,54,55,100,101,180,203,210,

%T 211,378,379,382,383,1092,1093,2020,2021,2022,3933,3956,6473,10226,

%U 10227,10266,10561,20948,20949

%N Number of subsets of {1..n} whose harmonic mean is an integer.

%C For terms listed in the Data section: a(p^k) = a(p^k-1) + 1, where p prime (empirical observation). - _Ilya Gutkovskiy_, Dec 06 2020

%C From _Chai Wah Wu_, Dec 14 2020: (Start)

%C The above empirical observation is true.

%C Theorem: For prime p, a(p^k) = a(p^k-1)+1.

%C Proof: Since the singleton set {x} has harmonic mean x, a(n) >= a(n-1)+1.

%C Let S = {s_1,s_2,..,s_n} be a subset of {1,2,..,p^k} with n>1 elements such that s_n = p^k and let H be the harmonic mean of S. Let M = A003418(p^k) be the least common multiple of {1,2,..,p^k}. Then M = Wp^k where p does not divide W = A002944(p^k).

%C Let Q_i = M/s_i and Q = sum_i Q_i. This implies that Q_n = W and p divides Q_i for i < n.

%C H can be written as nM/Q. Since p does not divide W, this implies that p does not divide Q. Suppose H is an integer. Then this implies that Q divides nM/p^k = nW.

%C Note that s_i < s_n for i < n. This implies that Q_i > W for i < n, i.e. Q > nW, and this contradicts the fact that Q divides nW and thus H is not an integer.

%C Thus {p^k} is the only subset of {1,2,..,p^k} that includes p^k and have an integral Harmonic mean.

%C This concludes the proof.

%C (End)

%H Eric W. Weisstein's World of Mathematics, <a href="http://mathworld.wolfram.com/HarmonicMean.html">Harmonic Mean</a>

%F a(n) >= a(n-1)+1. For prime p, a(p^k) = a(p^k-1)+1. - _Chai Wah Wu_, Dec 14 2020

%e a(6) = 12 subsets: {1}, {2}, {3}, {4}, {5}, {6}, {2, 6}, {3, 6}, {1, 3, 6}, {2, 3, 6}, {3, 4, 6} and {1, 2, 3, 6}.

%o (Python)

%o from itertools import chain, combinations

%o from fractions import Fraction

%o def powerset(s): # skip empty set

%o return chain.from_iterable(combinations(s, r) for r in range(1,len(s)+1))

%o def hm(s):

%o ss = sum(Fraction(1, i) for i in s)

%o return Fraction(len(s)*ss.denominator, ss.numerator)

%o def a(n):

%o return sum(hm(s).denominator==1 for s in powerset(range(1,n+1)))

%o print([a(n) for n in range(1, 16)]) # _Michael S. Branicky_, Dec 06 2020

%o (Python)

%o from math import lcm

%o from itertools import combinations

%o def A339453(n):

%o m = lcm(*range(2,n+1))

%o return sum(1 for i in range(1,n+1) for d in combinations((m//i for i in range(1,n+1)),i) if m*i % sum(d) == 0) # _Chai Wah Wu_, Dec 02 2021

%Y Cf. A002944, A003418, A051293, A067540, A246655, A326027, A339454.

%K nonn,more

%O 1,2

%A _Ilya Gutkovskiy_, Dec 05 2020

%E a(23)-a(29) from _Michael S. Branicky_, Dec 06 2020

%E a(30)-a(35) from _Chai Wah Wu_, Dec 08 2020

%E a(36)-a(39) from _Chai Wah Wu_, Dec 11 2020

%E a(40)-a(41) from _Chai Wah Wu_, Dec 19 2020