prog.sf 478 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/ruby
  2. # PARI/GP programs
  3. # a(n) = n - sum(k=1, sqrtint(n), moebius(k) * (n\k^2));
  4. # a(n) = my(s=0); forsquarefree(k=1, sqrtint(n), s += (-1)^(#k[2]~) * (n\k[1]^2)); n - s;
  5. func a(n) {
  6. n.nonsquarefree_count
  7. }
  8. func b(n) {
  9. n - sum(1..n.isqrt, {|k|
  10. moebius(k) * floor(n / k**2)
  11. })
  12. }
  13. func f(n) { # incorrect formula
  14. var s = 0
  15. each_prime(1..n.isqrt, {|p|
  16. s += idiv(n, p**2)
  17. })
  18. s
  19. }
  20. say 40.of(a)
  21. say 40.of(b)
  22. say 40.of(f)