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 3.2 seconds.
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 > 3) break; // not eligible if has > 2 divisors
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[5], count = 0, limit = 500, s = 3, c = 3, squares = 1, cubes = 1;
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, "");