non-pandigital_carmichael_cached.pl 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/perl
  2. # Largest known non-pandigital Carmichael-number?
  3. # Problem from:
  4. # https://math.stackexchange.com/questions/4727838/largest-known-non-pandigital-carmichael-number
  5. use 5.020;
  6. use strict;
  7. use warnings;
  8. use Storable;
  9. use Math::GMPz;
  10. use ntheory qw(:all);
  11. #use Math::Sidef qw(is_fibonacci);
  12. #use Math::Prime::Util::GMP;
  13. use experimental qw(signatures);
  14. use List::Util qw(uniq);
  15. my $carmichael_file = "cache/factors-carmichael.storable";
  16. my $carmichael = retrieve($carmichael_file);
  17. my $t = Math::GMPz::Rmpz_init_set_ui(0);
  18. my $max = Math::GMPz::Rmpz_init_set_ui(0);
  19. while(my($key, $value) = each %$carmichael) {
  20. my @arr = uniq(split(//, $key));
  21. if (@arr < 9) {
  22. Math::GMPz::Rmpz_set_str($t, $key, 10);
  23. if ($t > $max) {
  24. Math::GMPz::Rmpz_set($max, $t);
  25. say $key;
  26. }
  27. }
  28. }
  29. __END__
  30. 1173134064449194642607772961
  31. 2707919178335377580229505921
  32. 2565725525577577667466525242881
  33. 1192630881882960900848281663080001
  34. 18009956670998641906961577195758401
  35. 6108217232633082681906809606009137921
  36. 11684481601509580514689185125598110210401
  37. 8540459041545441604854988856176194876049741
  38. 24401413084510554423536544004606650836656321
  39. 48630936334643334101211481634882249463084001
  40. 53896648695167545631657574576486461961799681
  41. 79929124221529331502274195427290223331742141
  42. 188562163845850384482030300154603824662386561
  43. 4873738397513713778074934757543707314307340001
  44. 205753133602696292325676133512925929399023762961
  45. 166881226771712730402012036273874036332643600717681
  46. 2832301991199898344880319739243377178777932393009281
  47. 69151952950273521303030336106507193030327190205295772001
  48. 29302680383281339084821200381682446212968030489888602212801
  49. 24175535728373739778391915425385744974848129389282725172845441