upper-bounds.sf 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/ruby
  2. # Smallest overpseudoprime to base 2 (A141232) with n distinct prime factors.
  3. # https://oeis.org/A353409
  4. # Known terms:
  5. # 2047, 13421773, 14073748835533
  6. # Upper-bounds:
  7. # a(5) <= 1376414970248942474729
  8. # a(6) <= 48663264978548104646392577273
  9. # a(7) <= 294413417279041274238472403168164964689
  10. # a(8) <= 98117433931341406381352476618801951316878459720486433149
  11. # a(9) <= 1252977736815195675988249271013258909221812482895905512953752551821
  12. include("../../../factordb/auto.sf")
  13. var min = Inf
  14. #~ var n = 5
  15. #~ var psize = 9
  16. #~ var from = 1206
  17. var n = 6
  18. var psize = 9
  19. var from = 879
  20. #~ var n = 7
  21. #~ var psize = 10
  22. #~ var from = 620
  23. #~ #var from = 1200
  24. #~ var n = 8
  25. #~ var psize = 11
  26. #~ var from = 369636
  27. say ":: Searching upper-bounds for n = #{n} from k = #{from}"
  28. var counter = 0
  29. for k in (from .. from+1e3) {
  30. if (++counter % 10 == 0) {
  31. say ":: Checking: k = #{k}"
  32. }
  33. # Conjecture: the ord(2, a(n)) must be of this form
  34. k.is_prime || is_prime(k/4) || is_prime(k/12) || next
  35. var f = factordb(2**k - 1).grep{ .len <= psize }.grep{.is_prime}.grep { powmod(2, k, _) == 1 }.grep{ znorder(2,_) == k }
  36. say "[#{k}] Binomial: #{binomial(f.len, n)}" if (f.len > n)
  37. var count = 0
  38. f.combinations(n, {|*a|
  39. var t = a.prod
  40. if (t.is_strong_psp) {
  41. if (t < min) {
  42. say "a(#{n}) <= #{t}"
  43. min = t
  44. }
  45. }
  46. break if (++count > 1e4)
  47. })
  48. }
  49. __END__
  50. a(5) <= 3223802185639011132549803
  51. a(5) <= 636607858967934928371769
  52. a(5) <= 124250696089090697678753
  53. a(5) <= 8278905362357819790631
  54. a(5) <= 1376414970248942474729
  55. a(6) <= 32245825439777493648426550929515449
  56. a(6) <= 721606983841657320586259138751241
  57. a(6) <= 48663264978548104646392577273
  58. a(7) <= 294413417279041274238472403168164964689
  59. a(8) <= 98117433931341406381352476618801951316878459720486433149
  60. a(9) <= 1252977736815195675988249271013258909221812482895905512953752551821