prog.sf 482 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/ruby
  2. # Number of subsets of {1..n} whose harmonic mean is an integer.
  3. # https://oeis.org/A339453
  4. func a(n) is cached {
  5. if (n.is_prime_power) { # a(p^k) = a(p^k-1)+1
  6. var p = n.perfect_root
  7. var k = n.perfect_power
  8. return (a(p**k - 1)+1)
  9. }
  10. var count = 0
  11. @(1..n) -> subsets {|*a|
  12. if (Math.harmonic_mean(a...).is_int) {
  13. ++count
  14. }
  15. }
  16. return count
  17. }
  18. for k in (1..100) {
  19. print(a(k), ", ")
  20. }