new_v2.pl 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/usr/bin/perl
  2. use 5.014;
  3. use Math::GMPz;
  4. use ntheory qw(next_prime forprimes);
  5. # Prime(n), where n is such that (sum_{i=1..n} prime(i)) / n is an integer.
  6. # https://oeis.org/A171399
  7. # Known terms:
  8. # 2, 83, 241, 6599, 126551, 1544479, 4864121, 60686737, 1966194317, 63481708607, 1161468891953, 14674403807731, 22128836547913
  9. sub prime_count {
  10. my ($n) = @_;
  11. chomp(my $p = `../primecount $n`);
  12. return $p;
  13. }
  14. {
  15. my $prev_i;
  16. my $prev_p;
  17. sub nth_prime {
  18. my ($n) = @_;
  19. if (not(defined($prev_i))) {
  20. $prev_i = $n;
  21. chomp($prev_p = `../primecount -n $n`);
  22. return $prev_p;
  23. }
  24. for (1 .. $n - $prev_i) {
  25. $prev_p = next_prime($prev_p);
  26. }
  27. $prev_i = $n;
  28. return $prev_p;
  29. }
  30. }
  31. {
  32. my $prev_n;
  33. my $prev_sum;
  34. sub sum_primes {
  35. my ($n) = @_;
  36. if (not defined($prev_n)) {
  37. chomp(my $sum = `../primesum $n`);
  38. $prev_n = $n;
  39. $prev_sum = Math::GMPz->new($sum);
  40. return $prev_sum;
  41. }
  42. $prev_sum += ntheory::sum_primes($prev_n + 1, $n);
  43. $prev_n = $n;
  44. return $prev_sum;
  45. }
  46. }
  47. my $n = 803058000000; # next term is greater than prime($n)
  48. #my $n = prime_count(22128836547913)-1e7;
  49. #my $n = 10;
  50. #my $n = prime_count(22128836547913) + 1;
  51. #my $n = 758792000000; # next term is greater than prime($n)
  52. #my $n = prime_count(14674403807731)-1e7;
  53. my $p = nth_prime($n);
  54. my $sum = sum_primes($p - 1);
  55. forprimes {
  56. #$sum += $_;
  57. Math::GMPz::Rmpz_add_ui($sum, $sum, $_);
  58. if ($n % 1000000 == 0) {
  59. say "Testing: $n";
  60. }
  61. #if ($sum % $n == 0) {
  62. if (Math::GMPz::Rmpz_divisible_ui_p($sum, $n)) {
  63. die "Found: $_ with $sum % $n\n";
  64. }
  65. ++$n;
  66. } $p, 10**15;