repunits_from_repunits.sf 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 14 December 2018
  4. # https://github.com/trizen
  5. # a(n) = least positive `k`, such that `((n^k - 1)/(n-1)) / (Prod_{p^e | k} (n^(p^e) - 1)/(n-1))` is a prime number.
  6. # For example:
  7. # a(19) = 34
  8. # Let:
  9. # t = (19^34 - 1)/18
  10. # Since 34 = 2*17, we have:
  11. # a = (19^2 - 1)/18
  12. # b = (19^17 - 1)/18
  13. # By definition, `t / (a*b)` is a prime number, meaning that `t` can be factorized as:
  14. # t = a * b * (t / (a*b))
  15. # Expanded form:
  16. # (19^34 - 1)/18 = (19^2 - 1)/18 * (19^17 - 1)/18 * (((19^34 - 1)/18) / ((19^2 - 1)/18 * (19^17 - 1)/18))
  17. # (19^34 - 1)/18 = 20 * 304465936543600121441 * 274019342889240109297
  18. # See also:
  19. # https://oeis.org/A320914
  20. # https://en.wikipedia.org/wiki/Repunit
  21. for n in (2..40) {
  22. for k in (2 .. Inf) {
  23. var t = (n**k - 1)/(n-1)
  24. t /= k.factor_prod {|p,e|
  25. (n**(p**e) - 1)/(n-1)
  26. }
  27. t.is_int || next
  28. if (t.is_prob_prime) {
  29. say "a(#{n}) = #{k} -> #{n**k - 1 / (n-1)}"
  30. break
  31. }
  32. }
  33. }
  34. __END__
  35. a(2) = 6 -> 63
  36. a(3) = 6 -> 364
  37. a(4) = 6 -> 1365
  38. a(5) = 10 -> 2441406
  39. a(6) = 6 -> 9331
  40. a(7) = 6 -> 19608
  41. a(8) = 87 -> 529335265084874036222038788611144721614948501328642578466091812607602878353993
  42. a(9) = 6 -> 66430
  43. a(10) = 10 -> 1111111111
  44. a(11) = 10 -> 2593742460
  45. a(12) = 10 -> 5628851293
  46. a(13) = 6 -> 402234
  47. a(14) = 14 -> 854769755812155
  48. a(15) = 6 -> 813616
  49. a(16) = 6 -> 1118481
  50. a(17) = 14 -> 10523614159962558
  51. a(18) = 6 -> 2000719
  52. a(19) = 34 -> 1668591117276687645552547004361146262739540
  53. a(20) = 10 -> 538947368421