u.pl 813 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/perl
  2. # a(n) is the least integer k such that the remainder of k modulo p is strictly increasing over the first n primes.
  3. # https://oeis.org/A306582
  4. use 5.014;
  5. use ntheory qw(:all);
  6. # 0, 2, 4, 34, 52, 194, 502, 1138, 4042, 5794, 5794, 62488, 798298, 5314448, 41592688
  7. sub foo {
  8. my ($n, $from) = @_;
  9. my $p = nth_prime($n);
  10. my @primes = reverse @{primes(nth_prime($n-1))};
  11. OUTER: for(my $k = $from; ; ++$k) {
  12. my $max = $k%$p;
  13. #my $ok = 1;
  14. foreach my $q(@primes){
  15. if ($k % $q < $max) {
  16. $max = $k%$q;
  17. }
  18. else {
  19. next OUTER;
  20. }
  21. }
  22. return $k;
  23. }
  24. }
  25. my $prev = 5037219688;
  26. foreach my $n(18..100) {
  27. my $t = foo($n, $prev);
  28. say "a($n) = $t";
  29. $prev = $t;
  30. }