%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