Magnanimous numbers: Difference between revisions
Content added Content deleted
(Added Algol W) |
(Added C++ solution) |
||
Line 340: | Line 340: | ||
391st through 400th magnanimous numbers: |
391st through 400th magnanimous numbers: |
||
486685 488489 515116 533176 551558 559952 595592 595598 600881 602081 |
486685 488489 515116 533176 551558 559952 595592 595598 600881 602081 |
||
</pre> |
|||
=={{header|C++}}== |
|||
<lang cpp>#include <iomanip> |
|||
#include <iostream> |
|||
bool is_prime(unsigned int n) { |
|||
if (n < 2) |
|||
return false; |
|||
if (n % 2 == 0) |
|||
return n == 2; |
|||
if (n % 3 == 0) |
|||
return n == 3; |
|||
for (unsigned int p = 5; p * p <= n; p += 4) { |
|||
if (n % p == 0) |
|||
return false; |
|||
p += 2; |
|||
if (n % p == 0) |
|||
return false; |
|||
} |
|||
return true; |
|||
} |
|||
bool is_magnanimous(unsigned int n) { |
|||
for (unsigned int p = 10; n >= p; p *= 10) { |
|||
if (!is_prime(n % p + n / p)) |
|||
return false; |
|||
} |
|||
return true; |
|||
} |
|||
int main() { |
|||
unsigned int count = 0, n = 0; |
|||
std::cout << "First 45 magnanimous numbers:\n"; |
|||
for (; count < 45; ++n) { |
|||
if (is_magnanimous(n)) { |
|||
if (count > 0) |
|||
std::cout << (count % 15 == 0 ? "\n" : ", "); |
|||
std::cout << std::setw(3) << n; |
|||
++count; |
|||
} |
|||
} |
|||
std::cout << "\n\n241st through 250th magnanimous numbers:\n"; |
|||
for (unsigned int i = 0; count < 250; ++n) { |
|||
if (is_magnanimous(n)) { |
|||
if (count++ >= 240) { |
|||
if (i++ > 0) |
|||
std::cout << ", "; |
|||
std::cout << n; |
|||
} |
|||
} |
|||
} |
|||
std::cout << "\n\n391st through 400th magnanimous numbers:\n"; |
|||
for (unsigned int i = 0; count < 400; ++n) { |
|||
if (is_magnanimous(n)) { |
|||
if (count++ >= 390) { |
|||
if (i++ > 0) |
|||
std::cout << ", "; |
|||
std::cout << n; |
|||
} |
|||
} |
|||
} |
|||
std::cout << '\n'; |
|||
return 0; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
First 45 magnanimous numbers: |
|||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16, 20 |
|||
21, 23, 25, 29, 30, 32, 34, 38, 41, 43, 47, 49, 50, 52, 56 |
|||
58, 61, 65, 67, 70, 74, 76, 83, 85, 89, 92, 94, 98, 101, 110 |
|||
241st through 250th magnanimous numbers: |
|||
17992, 19972, 20209, 20261, 20861, 22061, 22201, 22801, 22885, 24407 |
|||
391st through 400th magnanimous numbers: |
|||
486685, 488489, 515116, 533176, 551558, 559952, 595592, 595598, 600881, 602081 |
|||
</pre> |
</pre> |
||