prog.pl 850 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/perl
  2. # https://oeis.org/draft/A306978
  3. use 5.020;
  4. use warnings;
  5. use experimental qw(signatures);
  6. sub f ($n) {
  7. my $count = 0;
  8. my $cons = 0;
  9. while ($n != 1) {
  10. ++$count;
  11. if ($n % 3 == 0) {
  12. $n = int($n/3);
  13. $cons = 0;
  14. }
  15. else {
  16. if ($cons) {
  17. return -1;
  18. }
  19. $n = int($n * sqrt(3));
  20. $cons = 1;
  21. }
  22. }
  23. $count;
  24. }
  25. foreach my $k(77676682, 134539960, 402368674, 696922987, 1207106023, 2090768962, 3632578906, 6291811228, 10897736719, 18875433685) {
  26. say "$k -> ", f($k);
  27. }
  28. # 6291811228 -- 55
  29. # 10897736719 -- 57
  30. # 18875433685 -- 59
  31. my $record = 59;
  32. foreach my $k(18875433685 * 1.732 ..1e11) {
  33. if (f($k) > $record) {
  34. $record = f($k);
  35. say "New record: $record with $k";
  36. }
  37. }