gauss-euler_counterexample.pl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/perl
  2. # Try to find a counter-example to the following 26+4 test:
  3. # https://arxiv.org/pdf/2311.07048.pdf
  4. # See also:
  5. # https://www.mersenneforum.org/showthread.php?t=27288&page=3
  6. use 5.036;
  7. use Math::GMPz;
  8. use ntheory qw(:all);
  9. use Math::Prime::Util::GMP qw();
  10. sub is_ok($n, $z) {
  11. Math::Prime::Util::GMP::is_strong_pseudoprime($n, $z) || return;
  12. Math::GMPz::Rmpz_sub_ui($z, $z, 2);
  13. Math::Prime::Util::GMP::is_strong_pseudoprime($n, $z) || return;
  14. Math::GMPz::Rmpz_add_ui($z, $z, 1);
  15. Math::Prime::Util::GMP::is_strong_pseudoprime($n, $z) || return;
  16. Math::GMPz::Rmpz_add_ui($z, $z, 2);
  17. Math::Prime::Util::GMP::is_strong_pseudoprime($n, $z) || return;
  18. Math::GMPz::Rmpz_add_ui($z, $z, 1);
  19. Math::Prime::Util::GMP::is_strong_pseudoprime($n, $z) || return;
  20. return 1;
  21. }
  22. my $z = Math::GMPz::Rmpz_init();
  23. while (<>) {
  24. next if /^\h*#/;
  25. /\S/ or next;
  26. my $n = (split(' ', $_))[-1];
  27. $n || next;
  28. Math::Prime::Util::GMP::is_strong_pseudoprime($n, 2) || next;
  29. Math::GMPz::Rmpz_set_str($z, "$n", 10);
  30. Math::GMPz::Rmpz_sqrt($z, $z);
  31. is_ok($n, $z) || next;
  32. say "Strong candidate: $n";
  33. my $ok = 1;
  34. foreach my $k (2, 3, 5, 7) {
  35. Math::GMPz::Rmpz_set_str($z, "$n", 10);
  36. Math::GMPz::Rmpz_div_ui($z, $z, $k);
  37. Math::GMPz::Rmpz_sqrt($z, $z);
  38. if (not is_ok($n, $z)) {
  39. $ok = 0;
  40. last;
  41. }
  42. }
  43. if ($ok) {
  44. die "Counter-example: $n";
  45. }
  46. }
  47. __END__
  48. Strong candidate: 33577362035427547
  49. Strong candidate: 66799233831435661
  50. Strong candidate: 2126730403061568481
  51. Strong candidate: 801475619827501
  52. Strong candidate: 17382942756591571116689204567251
  53. Strong candidate: 421388268445534102651
  54. Strong candidate: 2087523327838745971351
  55. Strong candidate: 35491807953253
  56. Strong candidate: 98482998659653
  57. Strong candidate: 247304741216653
  58. Strong candidate: 936029516476753
  59. Strong candidate: 202278967333409551940317
  60. Strong candidate: 2547824360659482079150411
  61. Strong candidate: 2736700706799799817698981
  62. Strong candidate: 17549634678726794947542331
  63. Strong candidate: 19619535851111080779494491
  64. Strong candidate: 4736959538130074753976271501
  65. Strong candidate: 21298066960797290008315675981
  66. Strong candidate: 1396956675261421
  67. Strong candidate: 1748929333788253
  68. Strong candidate: 1818269413374781
  69. Strong candidate: 1820763947860201
  70. Strong candidate: 4180459179686653
  71. Strong candidate: 1240231697100669301580000053153
  72. Strong candidate: 331283599542836714881
  73. Strong candidate: 1196372393510837715901
  74. Strong candidate: 115244331850772213443201
  75. Strong candidate: 4988827923413437
  76. Strong candidate: 435136583547090937
  77. Strong candidate: 1676991107224649318761789260301
  78. Strong candidate: 75257154388706023071521
  79. Strong candidate: 188464763337512904668161
  80. Strong candidate: 4619825290614895285579776001
  81. Strong candidate: 366561981379415638100780135641
  82. Strong candidate: 414775787512777289605001428392961
  83. Strong candidate: 27393967090456157700880458957419898348001
  84. Strong candidate: 9278429690310147005187985717030752794327663339521
  85. Strong candidate: 29459595391587275041
  86. Strong candidate: 197734612396517932861
  87. Strong candidate: 5831377063293410935741
  88. Strong candidate: 12307392018216273778381
  89. Strong candidate: 55134316712426407837214653
  90. Strong candidate: 21799679499855951440790695653
  91. Strong candidate: 47358126264277687729736538260640361
  92. Strong candidate: 4808909621762460059206771635409661401
  93. Strong candidate: 53746997020689787957114446770698223988181