193 Squarefree Numbers -- v2.pl 472 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 09 February 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=193
  7. # Runtime: 3.838s
  8. use 5.010;
  9. use strict;
  10. use integer;
  11. use ntheory qw(:all);
  12. sub squarefree_count {
  13. my ($n) = @_;
  14. my $count = 0;
  15. my $k = 0;
  16. foreach my $m (moebius(1, sqrtint($n))) {
  17. ++$k;
  18. $count += $m * $n / ($k*$k) if $m;
  19. }
  20. return $count;
  21. }
  22. say squarefree_count(1 << 50);