carmichael_lambdas_cached.pl 766 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/perl
  2. # Generate lambda values of Carmichael numbers.
  3. use 5.020;
  4. use strict;
  5. use warnings;
  6. use Storable;
  7. use Math::GMPz;
  8. use ntheory qw(:all);
  9. use Math::Prime::Util::GMP;
  10. use experimental qw(signatures);
  11. my $carmichael_file = "cache/factors-carmichael.storable";
  12. my $carmichael = retrieve($carmichael_file);
  13. my %table;
  14. sub my_carmichael_lambda ($factors) {
  15. Math::Prime::Util::GMP::lcm(map { Math::Prime::Util::GMP::subint($_, 1) } @$factors);
  16. }
  17. my %seen;
  18. foreach my $n (keys %$carmichael) {
  19. #length($n) > 100 or next;
  20. my @factors = split(' ', $carmichael->{$n});
  21. my $lambda = my_carmichael_lambda(\@factors);
  22. #~ next if ($lambda < 1e10);
  23. #~ next if ($lambda > ~0);
  24. next if $seen{$lambda}++;
  25. say $lambda;
  26. }