prog.sf 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/ruby
  2. # a(n) is the least prime P such that P^(2*prime(n))-P^prime(n)-1 is prime with prime(n) the n-th prime.
  3. # https://oeis.org/A131580
  4. # First 100 terms:
  5. # 2, 3, 2, 3, 163, 19, 151, 263, 131, 3041, 311, 401, 2029, 1163, 2309, 157, 541, 61, 739, 563, 1097, 4813, 1801, 1399, 709, 317, 14563, 863, 5479, 337, 2351, 9533, 4931, 401, 1117, 14639, 17791, 1409, 571, 5171, 16633, 7001, 2129, 10891, 31151, 22709, 6079, 883, 20113, 61, 311, 24023, 2671, 4643, 1031, 2399, 22621, 6763, 101, 3299, 41479, 2699, 1523, 8521, 9239, 1289, 2521, 36677, 34981, 22369, 58831, 1303, 15991, 42667, 53189, 6421, 5279, 10079, 35107, 7877, 108289, 9851, 2179, 7499, 11831, 16091, 1597, 26987, 1601, 38543, 15971, 40933, 2293, 55439, 23, 20161, 71809, 431, 3, 31177
  6. func a(n) {
  7. var pn = prime(n)
  8. for (var p = 2; true; p.next_prime!) {
  9. if (p**(2*pn) - p**pn - 1 -> is_prob_prime) {
  10. return p
  11. }
  12. }
  13. }
  14. say "First 10 terms: "
  15. say 10.of { a(_+1) }
  16. say "\nTrying to find more terms, starting with a(101):"
  17. for n in (101..200) { # find more terms
  18. print(a(n), ", ")
  19. }
  20. say ''
  21. var arr = [
  22. 2, 3, 2, 3, 163, 19, 151, 263, 131, 3041, 311, 401, 2029, 1163, 2309, 157, 541, 61, 739, 563, 1097, 4813, 1801, 1399, 709, 317, 14563, 863, 5479, 337, 2351, 9533, 4931, 401, 1117, 14639, 17791, 1409, 571, 5171, 16633, 7001, 2129, 10891, 31151, 22709, 6079, 883, 20113, 61, 311, 24023, 2671, 4643, 1031, 2399, 22621, 6763, 101, 3299, 41479, 2699, 1523, 8521, 9239, 1289, 2521, 36677, 34981, 22369, 58831, 1303, 15991, 42667, 53189, 6421, 5279, 10079, 35107, 7877, 108289, 9851, 2179, 7499, 11831, 16091, 1597, 26987, 1601, 38543, 15971, 40933, 2293, 55439, 23, 20161, 71809, 431, 3, 31177
  23. ]
  24. for k,p in (arr.kv) {
  25. var pn = prime(k+1)
  26. var t = (p**(2*pn) - p**pn - 1)
  27. if (t.len > 2000) {
  28. say "#{p}^(2*#{pn}) - #{p}^#{pn} - 1"
  29. }
  30. }
  31. __END__
  32. # Primes with more than 2000 digits:
  33. 24023^(2*239) - 24023^239 - 1
  34. 22621^(2*269) - 22621^269 - 1
  35. 6763^(2*271) - 6763^271 - 1
  36. 41479^(2*283) - 41479^283 - 1
  37. 2699^(2*293) - 2699^293 - 1
  38. 8521^(2*311) - 8521^311 - 1
  39. 9239^(2*313) - 9239^313 - 1
  40. 2521^(2*331) - 2521^331 - 1
  41. 36677^(2*337) - 36677^337 - 1
  42. 34981^(2*347) - 34981^347 - 1
  43. 22369^(2*349) - 22369^349 - 1
  44. 58831^(2*353) - 58831^353 - 1
  45. 1303^(2*359) - 1303^359 - 1
  46. 15991^(2*367) - 15991^367 - 1
  47. 42667^(2*373) - 42667^373 - 1
  48. 53189^(2*379) - 53189^379 - 1
  49. 6421^(2*383) - 6421^383 - 1
  50. 5279^(2*389) - 5279^389 - 1
  51. 10079^(2*397) - 10079^397 - 1
  52. 35107^(2*401) - 35107^401 - 1
  53. 7877^(2*409) - 7877^409 - 1
  54. 108289^(2*419) - 108289^419 - 1
  55. 9851^(2*421) - 9851^421 - 1
  56. 2179^(2*431) - 2179^431 - 1
  57. 7499^(2*433) - 7499^433 - 1
  58. 11831^(2*439) - 11831^439 - 1
  59. 16091^(2*443) - 16091^443 - 1
  60. 1597^(2*449) - 1597^449 - 1
  61. 26987^(2*457) - 26987^457 - 1
  62. 1601^(2*461) - 1601^461 - 1
  63. 38543^(2*463) - 38543^463 - 1
  64. 15971^(2*467) - 15971^467 - 1
  65. 40933^(2*479) - 40933^479 - 1
  66. 2293^(2*487) - 2293^487 - 1
  67. 55439^(2*491) - 55439^491 - 1
  68. 20161^(2*503) - 20161^503 - 1
  69. 71809^(2*509) - 71809^509 - 1
  70. 431^(2*521) - 431^521 - 1
  71. 31177^(2*541) - 31177^541 - 1