Juggler sequence: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added oinline link) |
(Added C++ solution) |
||
Line 178: | Line 178: | ||
15845: l[n] = 139, d[n] = 23889, i[n] = 43 |
15845: l[n] = 139, d[n] = 23889, i[n] = 43 |
||
30817: l[n] = 93, d[n] = 45391, i[n] = 39"</lang> |
30817: l[n] = 93, d[n] = 45391, i[n] = 39"</lang> |
||
=={{header|C++}}== |
|||
{{trans|Go}} |
|||
<lang cpp>#include <cassert> |
|||
#include <iomanip> |
|||
#include <iostream> |
|||
#include <string> |
|||
#include <gmpxx.h> |
|||
using big_int = mpz_class; |
|||
auto juggler(int n) { |
|||
assert(n >= 1); |
|||
int count = 0, max_count = 0; |
|||
big_int a = n, max = n; |
|||
while (a != 1) { |
|||
if (a % 2 == 0) |
|||
a = sqrt(a); |
|||
else |
|||
a = sqrt(big_int(a * a * a)); |
|||
++count; |
|||
if (a > max) { |
|||
max = a; |
|||
max_count = count; |
|||
} |
|||
} |
|||
return std::make_tuple(count, max_count, max, max.get_str().size()); |
|||
} |
|||
int main() { |
|||
std::cout.imbue(std::locale("")); |
|||
std::cout << "n l[n] i[n] h[n]\n"; |
|||
std::cout << "--------------------------------\n"; |
|||
for (int n = 20; n < 40; ++n) { |
|||
auto [count, max_count, max, digits] = juggler(n); |
|||
std::cout << std::setw(2) << n << " " << std::setw(2) << count |
|||
<< " " << std::setw(2) << max_count << " " << max |
|||
<< '\n'; |
|||
} |
|||
std::cout << '\n'; |
|||
std::cout << " n l[n] i[n] d[n]\n"; |
|||
std::cout << "----------------------------------------\n"; |
|||
for (int n : {113, 173, 193, 2183, 11229, 15065, 15845, 30817, 48443, |
|||
275485, 1267909, 2264915, 5812827, 7110201, 56261531, |
|||
92502777, 172376627, 604398963}) { |
|||
auto [count, max_count, max, digits] = juggler(n); |
|||
std::cout << std::setw(11) << n << " " << std::setw(3) << count |
|||
<< " " << std::setw(3) << max_count << " " << digits |
|||
<< '\n'; |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
n l[n] i[n] h[n] |
|||
-------------------------------- |
|||
20 3 0 20 |
|||
21 9 4 140 |
|||
22 3 0 22 |
|||
23 9 1 110 |
|||
24 3 0 24 |
|||
25 11 3 52214 |
|||
26 6 3 36 |
|||
27 6 1 140 |
|||
28 6 3 36 |
|||
29 9 1 156 |
|||
30 6 3 36 |
|||
31 6 1 172 |
|||
32 6 3 36 |
|||
33 8 2 2598 |
|||
34 6 3 36 |
|||
35 8 2 2978 |
|||
36 3 0 36 |
|||
37 17 8 24906114455136 |
|||
38 3 0 38 |
|||
39 14 3 233046 |
|||
n l[n] i[n] d[n] |
|||
---------------------------------------- |
|||
113 16 9 27 |
|||
173 32 17 82 |
|||
193 73 47 271 |
|||
2,183 72 32 5,929 |
|||
11,229 101 54 8,201 |
|||
15,065 66 25 11,723 |
|||
15,845 139 43 23,889 |
|||
30,817 93 39 45,391 |
|||
48,443 157 60 972,463 |
|||
275,485 225 148 1,909,410 |
|||
1,267,909 151 99 1,952,329 |
|||
2,264,915 149 89 2,855,584 |
|||
5,812,827 135 67 7,996,276 |
|||
7,110,201 205 119 89,981,517 |
|||
56,261,531 254 92 105,780,485 |
|||
92,502,777 191 117 139,486,096 |
|||
172,376,627 262 90 449,669,621 |
|||
604,398,963 327 172 640,556,693 |
|||
</pre> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |