Super-d numbers: Difference between revisions

Alternative C++ solution
m (Rust - performance improvement)
(Alternative C++ solution)
Line 133:
First 10 super-4 numbers:
1168 4972 7423 7752 8431 10267 11317 11487 11549 11680</pre>
 
===Alternative using GMP===
{{libheader|GMP}}
{{trans|C}}
<lang cpp>#include <iostream>
#include <gmpxx.h>
 
using big_int = mpz_class;
 
int main() {
for (unsigned int d = 2; d <= 9; ++d) {
std::cout << "First 10 super-" << d << " numbers:\n";
std::string digits(d, '0' + d);
big_int bignum;
for (unsigned int count = 0, n = 1; count < 10; ++n) {
mpz_ui_pow_ui(bignum.get_mpz_t(), n, d);
bignum *= d;
auto str(bignum.get_str());
if (str.find(digits) != std::string::npos) {
std::cout << n << ' ';
++count;
}
}
std::cout << '\n';
}
return 0;
}</lang>
 
{{out}}
<pre>
First 10 super-2 numbers:
19 31 69 81 105 106 107 119 127 131
First 10 super-3 numbers:
261 462 471 481 558 753 1036 1046 1471 1645
First 10 super-4 numbers:
1168 4972 7423 7752 8431 10267 11317 11487 11549 11680
First 10 super-5 numbers:
4602 5517 7539 12955 14555 20137 20379 26629 32767 35689
First 10 super-6 numbers:
27257 272570 302693 323576 364509 502785 513675 537771 676657 678146
First 10 super-7 numbers:
140997 490996 1184321 1259609 1409970 1783166 1886654 1977538 2457756 2714763
First 10 super-8 numbers:
185423 641519 1551728 1854230 6415190 12043464 12147605 15517280 16561735 18542300
First 10 super-9 numbers:
17546133 32613656 93568867 107225764 109255734 113315082 121251742 175461330 180917907 182557181
</pre>
 
=={{header|D}}==
1,777

edits