generate.pl 834 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/perl
  2. # Try to generate a base-2 pseudoprime from combinations of primes.
  3. use 5.014;
  4. use warnings;
  5. use ntheory qw(:all);
  6. use List::Util qw(shuffle);
  7. my @primes;
  8. while (<>) {
  9. next if /%#/;
  10. /\d/ or next;
  11. chomp;
  12. my $n = (split(' ', $_))[-1];
  13. is_prime($n) || next;
  14. modint($n, 8) == 3 or next;
  15. kronecker(5, $n) == -1 or next;
  16. push @primes, $n;
  17. }
  18. my $n = scalar(@primes);
  19. say ":: Found $n primes...";
  20. for(my $k = 3; $k <= $n; $k += 2) {
  21. @primes = shuffle(@primes);
  22. my $nok = binomial($n, $k);
  23. say ":: Testing: $k -- tries: 10^", log("$nok")/log(10);
  24. my $tries = 0;
  25. forcomb {
  26. my $psp = vecprod(@primes[@_]);
  27. if ($psp > ~0 and is_pseudoprime($psp, 2)) {
  28. say "Found: $psp";
  29. }
  30. lastfor if (++$tries > 1e6);
  31. } $n, $k;
  32. }