prog.sf 798 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/ruby
  2. # The number of terms of A354558 that are <= 10^n.
  3. # https://oeis.org/A354559
  4. # Known terms:
  5. # 1, 2, 5, 13, 28, 79, 204, 549, 1509, 4231, 12072, 36426, 112589
  6. func a(n) {
  7. var k = 10**n
  8. #var smooth = []
  9. var count = 0
  10. var primes = []
  11. k.isqrt.each_prime {|p|
  12. var pp = p*p
  13. primes << p
  14. #smooth << smooth_numbers(idiv(k, pp), p.primes).map{_ * pp}...
  15. count += smooth_numbers(idiv(k, pp), primes).map{_ * pp}.count { .inc.gpf.sqr `divides` .inc }
  16. }
  17. #smooth.grep{.inc.gpf.sqr `divides` .inc}
  18. #smooth.count{.inc.gpf.sqr `divides` .inc}
  19. return count
  20. }
  21. for n in (1..15) {
  22. say "a(#{n}) = #{a(n)}"
  23. }
  24. __END__
  25. a(1) = 1
  26. a(2) = 2
  27. a(3) = 5
  28. a(4) = 13
  29. a(5) = 28
  30. a(6) = 79
  31. a(7) = 204
  32. a(8) = 549
  33. a(9) = 1509
  34. a(10) = 4231