lucas-carmichael_with_3_factors_p-1|n-1.pl 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/perl
  2. # Lucas-Carmichael numbers m that have at least 2 prime factors p such that p-1 | m-1.
  3. # https://oeis.org/A329948
  4. # It is not known whether any Carmichael number (A002997) is also a Lucas-Carmichael number (A006972).
  5. use 5.020;
  6. use strict;
  7. use warnings;
  8. use experimental qw(signatures);
  9. use Math::GMPz;
  10. use ntheory qw(:all);
  11. use Math::AnyNum qw(is_smooth);
  12. sub is_lucas_carmichael ($n) {
  13. my $t = $n + 1;
  14. vecall { $t % ($_ + 1) == 0 } factor($n);
  15. }
  16. while (<>) {
  17. next if /^\h*#/;
  18. /\S/ or next;
  19. my $n = (split(' ', $_))[-1];
  20. $n || next;
  21. next if $n < 1008003203999;
  22. #next if ($n < ~0);
  23. is_pseudoprime($n, 2) && next;
  24. is_smooth($n, 1e5) || next;
  25. if ($n > ((~0) >> 1)) {
  26. $n = Math::GMPz->new("$n");
  27. }
  28. is_lucas_carmichael($n) || next;
  29. is_square_free($n) || next;
  30. my $inc = $n - 1;
  31. my $k = scalar grep { $inc % ($_ - 1) == 0 } Math::Prime::Util::GMP::factor($n);
  32. if ($k >= 3) {
  33. if ($k >= 4) {
  34. say "New record: $n with $k primes p such that p-1 | m-1";
  35. }
  36. else {
  37. say $n;
  38. }
  39. }
  40. }
  41. __END__
  42. # Lucas-Carmichael numbers bellow 10^12 with at least 2 prime factors p such that p-1 | m-1:
  43. 58809496031
  44. 161513282399
  45. 244627234865
  46. 254080512449
  47. 276741041345
  48. 397745596079
  49. 482690075759
  50. 697522043735
  51. 846823631345
  52. # Terms with 3 prime factors p such that p-1 | m-1:
  53. 19606537382720316183704007491759
  54. 30929869681595566326223026143547237768574058684159