sieve_cluster.pl 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/usr/bin/perl
  2. # Primes p such that, starting with p, 10 consecutive primes = {1,2,3,4,5,6,7,8,9,10} modulo 11.
  3. # https://oeis.org/A338374
  4. use 5.014;
  5. use ntheory qw(:all);
  6. use experimental qw(signatures);
  7. # Also in the sequuence:
  8. # 1562407603483, 2482030844173, 3021762188281, 3521525276413, 4660551540041, 4933735042897
  9. sub isok ($p) {
  10. for (my $count = 1 ; $count <= 10 ; ++$count) {
  11. $p % 11 == $count or return;
  12. $p = next_prime($p);
  13. }
  14. return 1;
  15. }
  16. foreach my $p (
  17. 23700022897, 60962211883, 92728531127, 197520193069, 359754461617, 498393445859, 628772434951, 715117260463, 1053978912361, 1113788109127, 1188162419291, 1562407603483, 2482030844173, 3021762188281, 3521525276413, 4660551540041, 4933735042897
  18. ) {
  19. isok($p) || die "error for $p";
  20. }
  21. my %seen;
  22. foreach my $diff (
  23. #[14, 54, 68, 108, 122, 188, 228, 242],
  24. [12, 24, 36, 70, 82, 94, 106, 162, 196],
  25. [34, 46, 58, 70, 126, 138, 150, 184, 240],
  26. [12, 24, 102, 180, 192, 204, 282, 294, 306],
  27. [12, 24, 58, 70, 82, 138, 150, 162, 174],
  28. [12, 24, 36, 70, 82, 94, 150, 162, 174],
  29. [12, 24, 102, 158, 170, 182, 194, 228, 240],
  30. [78, 112, 168, 180, 192, 226, 238, 250, 306],
  31. [34, 46, 58, 114, 126, 138, 216, 228, 240],
  32. [12, 46, 58, 70, 148, 160, 172, 228, 240],
  33. [12, 24, 36, 70, 82, 94, 106, 162, 196],
  34. [56, 68, 80, 92, 126, 138, 150, 206, 240],
  35. [34, 46, 58, 114, 126, 138, 150, 250, 306],
  36. #~ [40, 54, 94, 160, 174, 214, 228, 234],
  37. #~ [40, 54, 94, 108, 148, 214, 228, 234],
  38. #~ [14, 54, 68, 134, 174, 240, 254, 260],
  39. #~ [14, 54, 68, 108, 174, 188, 254, 266],
  40. #~ [40, 54, 94, 108, 174, 214, 228, 328],
  41. #~ [40, 54, 94, 108, 148, 162, 202, 240],
  42. #~ [14, 54, 68, 108, 122, 188, 228, 284],
  43. #~ [66, 80, 120, 134, 174, 188, 254, 260],
  44. #~ [40, 54, 94, 108, 148, 214, 228, 250],
  45. #~ [14, 54, 68, 108, 122, 162, 228, 330],
  46. #~ [14, 80, 120, 186, 200, 240, 254, 266],
  47. #~ [14, 54, 68, 108, 122, 240, 254, 258],
  48. #~ [40, 54, 94, 108, 148, 214, 228, 276],
  49. #~ [118, 132, 172, 186, 226, 292, 306, 340],
  50. #~ [40, 54, 94, 108, 148, 214, 228, 244],
  51. #~ [14, 54, 68, 186, 200, 240, 254, 276],
  52. #~ [14, 54, 68, 186, 200, 240, 306, 314],
  53. #~ [40, 54, 94, 160, 174, 214, 228, 234],
  54. ) {
  55. pop @$diff;
  56. next if $seen{join(' ', @$diff)}++;
  57. say ":: Testing with differences (@$diff)";
  58. foreach my $p (sieve_prime_cluster(1562407603483, 1e13, @$diff)) {
  59. say $p if isok($p);
  60. }
  61. }
  62. __END__
  63. [5129602609, 40602028559, 69528307577, 129007460609, 236659873633, 322320688171, 371170549153, 390581208473, 441568239503, 651686524243].each{|p|
  64. say n_primes(8, p+1).map{ _ - p }
  65. }
  66. [40, 54, 94, 108, 148, 214, 228, 250]
  67. [14, 54, 68, 108, 122, 162, 228, 330]
  68. [14, 80, 120, 186, 200, 240, 254, 266]
  69. [14, 54, 68, 108, 122, 240, 254, 258]
  70. [40, 54, 94, 108, 148, 214, 228, 276]
  71. [118, 132, 172, 186, 226, 292, 306, 340]
  72. [40, 54, 94, 108, 148, 214, 228, 244]
  73. [14, 54, 68, 186, 200, 240, 254, 276]
  74. [14, 54, 68, 186, 200, 240, 306, 314]
  75. [40, 54, 94, 160, 174, 214, 228, 234]