x.pl 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/perl
  2. # Searched up to: 15733
  3. # https://oeis.org/A323353
  4. # Found: 24547
  5. use 5.014;
  6. use strict;
  7. use warnings;
  8. use Math::Prime::Util::GMP qw(lucasu is_prob_prime);
  9. foreach my $n(24548..1e9) {
  10. say "Testing: $n";
  11. if (is_prob_prime(lucasu(3, -8, $n))) {
  12. say "Found: $n";
  13. if ($n > 24547) {
  14. die "!!!Found new term!!! -- $n\n";
  15. }
  16. }
  17. }
  18. __END__
  19. var a = [2, 3, 7, 11, 13, 73, 401, 421, 677, 3673, 4903]
  20. a.each {|n|
  21. say lucasu(3, -8, n).is_prob_prime
  22. }
  23. __END__
  24. # Daniel "Trizen" Șuteu
  25. # Date: 08 January 2019
  26. # https://github.com/trizen
  27. # a(n) = smallest positive integer k such that n divides binomial(n+k, k).
  28. # Sequence inspired by the Kempner numbers:
  29. # https://oeis.org/A002034
  30. # Prime power identity:
  31. # a(p^k) = p^k * (p^k - 1), for p^k a prime power.
  32. # Lower bound formula for a(n). Let:
  33. # f(n, p^k) = p^k * (p^k - n/p^k)
  34. # if n = p1^e1 * p2^e2 * ... * pu^eu,
  35. # then a(n) >= max( f(n,p1^e1), f(n,p2^e2), ..., f(n,pu^eu) ).
  36. use 5.020;
  37. use warnings;
  38. use experimental qw(signatures);
  39. use ntheory qw(factor_exp);
  40. use Math::AnyNum qw(binomial is_div ipow max factorial prod rising_factorial falling_factorial);
  41. sub f ($n) {
  42. for (my $k = 1 ; ; ++$k) {
  43. if (is_div(falling_factorial($n, $k), $n)) {
  44. return $k;
  45. }
  46. }
  47. }
  48. sub g($n) { # g(n) <= f(n)
  49. max(map {
  50. my $pk = ipow($_->[0], $_->[1]);
  51. $pk * ($pk - $n / $pk)
  52. } factor_exp($n));
  53. }
  54. #say "f(n) = [", join(", ", map { f($_) } 2 .. 201), "]";
  55. #say "g(n) = [", join(", ", map { g($_) } 2 .. 201), "]";
  56. foreach my $n(2..20) {
  57. my $k = f($n);
  58. say "f($n) = $k";
  59. #rising_factorial($n, $k) == prod($n .. $n+$k-1) or die "error";
  60. #falling_factorial($n, $k) == prod($n-$k+1 .. $n) or die "error";
  61. #say "f($n) = ", $k, ' -> ', (prod($n-$k..$n)/factorial($k));
  62. #binomial($n + $k, $k) == prod($n+1..$n+$k)/factorial($k) or die "error";
  63. }
  64. __END__
  65. f(n) = [2, 6, 12, 20, 3, 42, 56, 72, 15, 110, 6, 156, 35, 12, 240, 272, 63, 342, 12, 33, 99, 506, 40, 600, 143, 702, 21, 812, 24, 930]
  66. g(n) = [2, 6, 12, 20, 3, 42, 56, 72, 15, 110, 4, 156, 35, 10, 240, 272, 63, 342, 5, 28, 99, 506, 40, 600, 143, 702, 21, 812, -5, 930]