prog.pl 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/perl
  2. # a(n) is the smallest n-gonal number divisible by exactly n n-gonal numbers.
  3. # https://oeis.org/A358859
  4. use 5.020;
  5. use ntheory qw(:all);
  6. use experimental qw(signatures);
  7. # PARI/GP program:
  8. # a(n) = if(n<3, return()); for(k=1, oo, my(t=(k*(n*k - n - 2*k + 4))\2); if(sumdiv(t, d, ispolygonal(d, n)) == n, return(t)));
  9. sub a($n) {
  10. my $count;
  11. for(my $k = 1; ; ++$k) {
  12. #my $t = divint(mulint($k, ($n*$k - $n - 2*$k + 4)), 2);
  13. my $t = rshiftint(mulint($k, ($n*$k - $n - 2*$k + 4)), 1);
  14. $count = 0;
  15. foreach my $d (divisors($t)) {
  16. if (is_polygonal($d, $n)) {
  17. ++$count;
  18. }
  19. }
  20. if ($count == $n) {
  21. return $t;
  22. }
  23. }
  24. }
  25. foreach my $n (3..100) {
  26. say "a($n) = ", a($n);
  27. }
  28. __END__
  29. a(3) = 6
  30. a(4) = 36
  31. a(5) = 210
  32. a(6) = 4560
  33. a(7) = 6426
  34. a(8) = 326040
  35. a(9) = 4232250
  36. a(10) = 1969110
  37. a(11) = 296676380
  38. a(12) = 4798080
  39. a(13) = 166289760
  40. a(14) = 73765692000
  41. a(15) = 712750500
  42. a(16) = 50561280
  43. a(17) = 33944067893736
  44. a(18) = 2139168754800
  45. a(19) = 4292572951800
  46. a(20) = 1414764341760
  47. a(21) = 72461756727360
  48. a(22) = 180975331456920
  49. a(23) = 1870768457500800
  50. a(24) = 5498331930000
  51. a(25) = 153698278734000