from_product.pl 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/perl
  2. use 5.014;
  3. use Math::GMPz;
  4. use ntheory qw(forsemiprimes forprimes factor forsquarefree random_prime divisors gcd next_prime);
  5. use Math::Prime::Util::GMP qw(mulint is_pseudoprime vecprod divint sqrtint vecprod is_carmichael);
  6. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257);
  7. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 269);
  8. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689);
  9. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553);
  10. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 257, 2731, 24007);
  11. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553);
  12. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 2689, 13553, 192193, 1921921, 2434433);
  13. #my $k = vecprod(3, 5, 17, 23, 29, 43, 53, 89, 113, 127, 157, 257, 353, 397, 449, 617, 1093, 1499);
  14. #my $k = vecprod(3, 5, 17, 23, 29, 53, 89);
  15. #my $k = vecprod(3, 5, 17, 23, 89, 113, 149);
  16. #my $k = vecprod(3, 5, 17, 23, 89, 113, 149, 3257);
  17. #my $k = vecprod(3, 5, 17, 23, 89, 113, 149, 3557);
  18. my $k = vecprod(3, 5, 17, 23, 29, 197, 617, 1217);
  19. forsquarefree {
  20. if ($_ & 1) {
  21. if (gcd($_, $k) == 1 and is_carmichael(mulint($k, $_))) {
  22. say mulint($k, $_);
  23. }
  24. }
  25. } 1e8;
  26. __END__
  27. #my $k = "44914889889994250085";
  28. #my $k = "127237648413581445";
  29. my $k = "77728835801292945";
  30. #my $k = "20909056830547802205";
  31. my $from = (factor($k))[-1];
  32. my $limit = 25000;
  33. my @factors;
  34. for(my $p1 = next_prime($from); $p1 <= $limit; $p1 = next_prime($p1)) {
  35. for(my $p2 = next_prime(int($p1*10)); $p2 <= $limit; $p2 = next_prime($p2)) {
  36. for(my $p3 = next_prime(int($p2*7)); $p3 <= $limit; $p3 = next_prime($p3)) {
  37. my $factor = $p1*$p2*$p3;
  38. if (is_pseudoprime(mulint($k, $factor), 2)) {
  39. say mulint($k, $factor);
  40. }
  41. }
  42. }
  43. }
  44. __END__
  45. say $count;
  46. my $from = 1e8+1e7+1e7+1e7+1e7;
  47. forsquarefree {
  48. if ($_ % 2 == 1) {
  49. if (is_pseudoprime(mulint($k, $_), 2)) {
  50. say mulint($k, $_);
  51. }
  52. }
  53. } $from,$from+1e7;