prog.sf 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/ruby
  2. # Smallest prime factor of p^p - 1 that is congruent to 1 modulo p where p = prime(n).
  3. # https://oeis.org/A212552
  4. # Also smallest prime factor of (p^p - 1)/(p - 1). - Jianing Song, Nov 03 2019
  5. # First few terms:
  6. # 3, 13, 11, 29, 15797, 53, 10949, 109912203092239643840221, 461, 59, 568972471024107865287021434301977158534824481, 149, 83, 173, 1693, 107, 709, 977, 269, 105649, 293, 317, 2657, 179, 389, 607, 1237, 137122213, 2617, 227, 509, 1049, 1097, 557, 1193, 2417, 86351
  7. # Conjecture:
  8. # a(41) = 618311908211315583991314548081149
  9. # a(56) = 3093592597970782253540981763792599633
  10. # a(72) = 4056508097535047114496121
  11. # No prime factor is known of (p^p - 1)/(p-1) for p = prime(73).
  12. # Status on factorDB: http://factordb.com/index.php?id=1100000000032217741
  13. include("../../../factordb/auto.sf")
  14. func a(n) {
  15. var p = prime(n)
  16. (p**p - 1) / (p-1)
  17. }
  18. var lookup = Hash(
  19. 41 => 618311908211315583991314548081149, # conjecture
  20. 50 => 633818873,
  21. 54 => 17694497,
  22. 56 => 3093592597970782253540981763792599633, # conjecture
  23. 66 => 32704891,
  24. 68 => 333810307133,
  25. 72 => 4056508097535047114496121, # conjecture
  26. )
  27. var bfile = File("bfile.txt").open_w.autoflush(true)
  28. for n in (1..10000) {
  29. var k = a(n)
  30. if (lookup.has(n)) {
  31. k = lookup{n}
  32. }
  33. var row = "#{n} #{lpf(k)||1}"
  34. say row
  35. bfile.say(row)
  36. }