Product of min and max prime factors: Difference between revisions
Content added Content deleted
(Added C++ solution) |
|||
Line 65: | Line 65: | ||
9 82 6889 14 85 86 87 22 7921 10 |
9 82 6889 14 85 86 87 22 7921 10 |
||
91 46 93 94 95 6 9409 14 33 10 |
91 46 93 94 95 6 9409 14 33 10 |
||
</pre> |
|||
=={{header|C++}}== |
|||
<syntaxhighlight lang="cpp">#include <iomanip> |
|||
#include <iostream> |
|||
#include <utility> |
|||
auto min_max_prime_factors(unsigned int n) { |
|||
unsigned int min_factor = 1; |
|||
unsigned int max_factor = 1; |
|||
if ((n & 1) == 0) { |
|||
while ((n & 1) == 0) |
|||
n >>= 1; |
|||
min_factor = 2; |
|||
max_factor = 2; |
|||
} |
|||
for (unsigned int p = 3; p * p <= n; p += 2) { |
|||
if (n % p == 0) { |
|||
while (n % p == 0) |
|||
n /= p; |
|||
if (min_factor == 1) |
|||
min_factor = p; |
|||
max_factor = p; |
|||
} |
|||
} |
|||
if (n > 1) { |
|||
if (min_factor == 1) |
|||
min_factor = n; |
|||
max_factor = n; |
|||
} |
|||
return std::make_pair(min_factor, max_factor); |
|||
} |
|||
int main() { |
|||
std::cout << "Product of smallest and greatest prime factors of n for 1 to " |
|||
"100:\n"; |
|||
for (unsigned int n = 1; n <= 100; ++n) { |
|||
auto p = min_max_prime_factors(n); |
|||
std::cout << std::setw(4) << p.first * p.second |
|||
<< (n % 10 == 0 ? '\n' : ' '); |
|||
} |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Product of smallest and greatest prime factors of n for 1 to 100: |
|||
1 4 9 4 25 6 49 4 9 10 |
|||
121 6 169 14 15 4 289 6 361 10 |
|||
21 22 529 6 25 26 9 14 841 10 |
|||
961 4 33 34 35 6 1369 38 39 10 |
|||
1681 14 1849 22 15 46 2209 6 49 10 |
|||
51 26 2809 6 55 14 57 58 3481 10 |
|||
3721 62 21 4 65 22 4489 34 69 14 |
|||
5041 6 5329 74 15 38 77 26 6241 10 |
|||
9 82 6889 14 85 86 87 22 7921 10 |
|||
91 46 93 94 95 6 9409 14 33 10 |
|||
</pre> |
</pre> |
||