0votos

Números perfectos en C

por Izan BF hace 3 meses

Un método muy fácil es este (el problema es que no puedes buscar en intervalos de más de 10^8 porque sueles necesitar demasiada memoria):

Encontrar números perfectos entre 0 y 10000. En lenguaje C.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h> 
#include <string.h> 
 
#define N 10000 
 
unsigned long long i, j, dsum[N+1]; 
 
int main() 
    memset(dsum, 0, (N+1) * sizeof(unsigned long long)); 
 
    for (i = 1; i <= N; ++i) { 
        for (j = 2*i; j <= N; j += i) { 
            dsum[j] += i; 
 
    printf("Números perfectos encontrados:\n"); 
    for (i = 1; i <= N; ++i) { 
        if (dsum[i] == i) { 
            // <i> es un número perfecto 
            printf("%llu\n", i); 
        }    
2 comentarios
0votos

Escrito por Izan BF hace 3 meses

Básicamente, para cada número vamos desde ese a todos sus múltiplos y lo sumamos.
La idea es utilizar una criba como la de Eratóstenes.
0votos

Escrito por Izan BF hace 3 meses

El siguiente método más eficiente es con números primos, pero eso es muy largo de escribir con C, con C++ es más fácil.

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.