smallest_carmichael-kronecker_with_n_factors_cached.pl 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/perl
  2. # Least Carmichael number k with n prime factors, having kronecker(5,p) = -1 for all primes p|k.
  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 $storable_file = "cache/factors-carmichael.storable";
  12. my $carmichael = retrieve($storable_file);
  13. my %table;
  14. while (my ($key, $value) = each %$carmichael) {
  15. #kronecker(5,$key) == -1 or next;
  16. my @factors = split(' ', $value);
  17. my $count = scalar(@factors);
  18. next if ($count < 10);
  19. (vecall { kronecker(5, $_) == -1 } @factors) || next;
  20. my $n = Math::GMPz->new($key);
  21. if (exists $table{$count}) {
  22. next if ($table{$count} < $n);
  23. }
  24. $table{$count} = $n;
  25. say "a($count) <= $n";
  26. }
  27. say "\n\nFinal results:\n";
  28. foreach my $k (sort { $a <=> $b } keys %table) {
  29. printf("a(%3d) <= %s\n", $k, $table{$k});
  30. }
  31. __END__
  32. a( 10) <= 30013487338223743201
  33. a( 11) <= 1829087313861474862273
  34. a( 12) <= 337695413426013716238529
  35. a( 13) <= 140865031766932330246183873
  36. a( 14) <= 17691024922368632614422453889
  37. a( 15) <= 12645317336903274624630026592673
  38. a( 16) <= 14196649107618758204011845543686401
  39. a( 17) <= 2309173143848017114041309867010434433
  40. a( 18) <= 171170567401280448697446558241918959285889
  41. a( 19) <= 454721150229403852923795648560187941931377857
  42. a( 20) <= 4382788616140887860370115516185831010562321782778881
  43. a( 21) <= 2626800425489709477930098102007105331062454960351666428673
  44. a( 22) <= 31658664340124722025021255962040913803802258388443841
  45. a( 23) <= 18253657709236091851020680698825663958254894734833784512257
  46. a( 24) <= 3821039575948030998109446373346815931263615548467217529093487041
  47. a( 25) <= 5844072823238808772175666889302356778676396227293230888934760826636097
  48. a( 26) <= 14428759159921264771078877192963558684496035880861322342035125339149441
  49. a( 27) <= 6406849764685589284232513910437799273390638299815902026671631413173626460287052130298179457
  50. a( 30) <= 2084993061635761846083487160555208993471712785721364889865962052418053348475785921
  51. a( 32) <= 151704619133522715319049708005625810072182925416121051478888363652326509169784449807067309886042544289
  52. a( 34) <= 43794076876617570369265069381312850224497942122128841005399616612583072330123249170271312171267939194401
  53. a( 36) <= 137515397146132022936512072656969444034166833375227584395369640371849509821936093626221551403233835573154592635162561
  54. a( 38) <= 1552707294557653966357865392395190405491528363741027177012246612936774490051275293629397402062078531602898747918580511798362217601