prog.sf 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/ruby
  2. local Num!PREC = 1024
  3. func inverse_tetrahedral(n) {
  4. (sqrt(3) * sqrt(243*n**2 - 1) + 27*n)**(1/3) / 3**(2/3) + 1/(3**(1/3) * (sqrt(3) * sqrt(243*n**2 - 1) + 27*n)**(1/3)) - 1
  5. }
  6. #func isok(k, n) {
  7. # assert(binomial(k+2, 3) >= n!)
  8. # assert(!(binomial(k+1, 3) >= n!))
  9. # return true
  10. #}
  11. func find(k, n) {
  12. #a(n) = while (k*(k+1)*(k+2)/6 < n!, k++); k;
  13. while (binomial(k+2, 3) < n!) {
  14. ++k
  15. }
  16. return k
  17. }
  18. for k in (1..50) {
  19. var t = find(int(inverse_tetrahedral(k!)), k)
  20. #~ if (binomial(t+2, 3) == k!) {
  21. #~ say "Special: #{k}"
  22. #~ }
  23. print(t, ", ")
  24. #print(ceil(inverse_tetrahedral(k!)), ", ")
  25. #isok(t, k)
  26. #print(t, ", ")
  27. }
  28. # (sqrt(3) sqrt(243 n^2 - 1) + 27 n)^(1/3)/3^(2/3) + 1/(3^(1/3) (sqrt(3) sqrt(243 n^2 - 1) + 27 n)^(1/3)) - 1
  29. # (sqrt(3) * sqrt(243*(n!)^2 - 1) + 27*n!)^(1/3) / 3^(2/3) + 1/(3^(1/3) * (sqrt(3) * sqrt(243 * (n!)^2 - 1) + 27 * n!)^(1/3)) - 1
  30. # a(n) = ceiling((sqrt(3) * sqrt(243*(n!)^2 - 1) + 27*n!)^(1/3) / 3^(2/3) + 1/(3^(1/3) * (sqrt(3) * sqrt(243 * (n!)^2 - 1) + 27 * n!)^(1/3)) - 1). - ~~~~