fermat_pseudoprimes_from_multiple.pl 630 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # Date: 08 March 2023
  4. # https://github.com/trizen
  5. # Generate Fermat pseudoprimes from a given multiple, to a given base.
  6. # See also:
  7. # https://trizenx.blogspot.com/2020/08/pseudoprimes-construction-methods-and.html
  8. use 5.036;
  9. use ntheory qw(:all);
  10. sub fermat_pseudoprimes_from_multiple ($base, $m, $callback) {
  11. my $L = znorder($base, $m);
  12. my $v = invmod($m, $L) // return;
  13. for (my $p = $v ; ; $p += $L) {
  14. if (is_pseudoprime($m * $p, $base)) {
  15. $callback->($m * $p);
  16. }
  17. }
  18. }
  19. fermat_pseudoprimes_from_multiple(2, 341, sub ($n) { say $n });