Multiplicatively perfect numbers: Difference between revisions
Content added Content deleted
(→{{header|C}}: Optimized and extended to 5 million,) |
(→{{header|C}}: Oops, even better :)) |
||
Line 101: | Line 101: | ||
=={{header|C}}== |
=={{header|C}}== |
||
This includes '1' as an MPN. Run time around |
This includes '1' as an MPN. Run time around 2.3 seconds. |
||
<syntaxhighlight lang="c">#include <stdio.h> |
<syntaxhighlight lang="c">#include <stdio.h> |
||
#include <stdbool.h> |
#include <stdbool.h> |
||
Line 127: | Line 127: | ||
if (!(n%i)) { |
if (!(n%i)) { |
||
divs[c++] = i; |
divs[c++] = i; |
||
if (c > |
if (c > 2) break; // not eligible if has > 2 divisors |
||
j = n / i; |
j = n / i; |
||
if (j != i) divs[c++] = j; |
if (j != i) divs[c++] = j; |
||
Line 137: | Line 137: | ||
int main() { |
int main() { |
||
int i, d, j, k, t, length, prod; |
int i, d, j, k, t, length, prod; |
||
int divs[ |
int divs[4], count = 0, limit = 500, s = 3, c = 3, squares = 1, cubes = 1; |
||
printf("Multiplicatively perfect numbers under %d:\n", limit); |
printf("Multiplicatively perfect numbers under %d:\n", limit); |
||
setlocale(LC_NUMERIC, ""); |
setlocale(LC_NUMERIC, ""); |