elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa en C que imprime los primeros m números perfectos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa en C que imprime los primeros m números perfectos  (Leído 21,906 veces)
ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Programa en C que imprime los primeros m números perfectos
« en: 29 Junio 2012, 18:18 pm »

Hola a todos, necesito su ayuda de nuevo; esta vez es un programa que imprime los primeros "m" números perfectos. Un número perfecto es aquél número "n" en el cual la suma de sus divisores (sin incluir a "n") es igual a ése número "n". Por ejemplo el 6; sus divisores sin incluirlo serían: 3, 2, 1 y su suma es igual a 6. En un mensaje anterior solicite su ayuda para realizar una función que me diera dicha suma de cualquier número, les dejo el código que lo hace:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int suma(int n);
  4. int main(int argc, char *argv[])
  5. {
  6.    int n;
  7.  
  8.    printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n");
  9.    printf("Introduce el numero\n");
  10.    scanf("%d",&n);
  11.    printf("El resuldado es: %d\n",suma(n));
  12.  
  13.    system("PAUSE");
  14.    return 0;
  15. }  
  16.   int suma(int n){
  17.       int i;
  18.       int d;
  19.       int c;
  20.       c=0;
  21.       for(i=1;i<n;i++){
  22.                        if(n%i==0){
  23.                                   d=i;
  24.                                   c+=d;
  25.                                   }
  26.                        }
  27.                        return c;
  28.       }
  29.  
Ahora utilizando esta función necesito hacer un programa que me registre los primeros "m" números perfectos, como se imaginarán tendré que llamar a dicha función dentro de la nueva función. Lo que busca este programa es que si por ejemplo yo ingreso "m" con el valor de 30; me imprima sólo los números perfectos menores o iguales a 30, serían: 6, 28. He avanzado un poco y aunque compila y ejecuta correctamente, no me da ningún resultado como debiera. Les dejo lo que tengo hasta ahora:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int suma(int n);
  4. void perfectos(int m);
  5. int main(int argc, char *argv[])
  6. {
  7.    int n;
  8.    int m;
  9.    printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n");
  10.    printf("Introduce el numero\n");
  11.    scanf("%d",&n);
  12.    printf("El resuldado es: %d\n",suma(n));
  13.    printf("Programa que imprime los primeros m numeros perfectos\n");
  14.    printf("Introduce m\n");
  15.    scanf("%d\n",&m);
  16.    printf("Los numeros perfectos son:\n");
  17.    perfectos(m);
  18.  
  19.  
  20.  
  21.    system("PAUSE");
  22.    return 0;
  23. }  
  24.   int suma(int n){
  25.       int i;
  26.       int d;
  27.       int c;
  28.       c=0;
  29.       for(i=1;i<n;i++){
  30.                        if(n%i==0){
  31.                                   d=i;
  32.                                   c+=d;
  33.                                   }
  34.                        }
  35.                        return c;
  36.       }
  37.       void perfectos(int m){
  38.           int i;
  39.           for(i=0;i<=m;i++){
  40.                             if(suma(i)==i){
  41.                                            printf("%d\n",i);              
  42.                                            }
  43.                             }
  44.           }
  45.  
Gracias a todos de antemano.


En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Programa en C que imprime los primeros m números perfectos
« Respuesta #1 en: 29 Junio 2012, 19:24 pm »

Hola! el programa anda bien, el problema es esto:
Código
  1. scanf("%d\n",&m);
el \n esta demas, es por eso q no te funciona... Y en el for de la funcion perfectos() inicializa i=1


Saludos


En línea

Ahorrate una pregunta, lee el man
ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Re: Programa en C que imprime los primeros m números perfectos
« Respuesta #2 en: 29 Junio 2012, 20:45 pm »

Hola! el programa anda bien, el problema es esto:
Código
  1. scanf("%d\n",&m);
el \n esta demas, es por eso q no te funciona... Y en el for de la funcion perfectos() inicializa i=1


Saludos
Muchas gracias durasno, tienes toda la razón.
« Última modificación: 29 Junio 2012, 20:53 pm por ERIK546 » En línea

ERIK546

Desconectado Desconectado

Mensajes: 44



Ver Perfil WWW
Re: Programa en C que imprime los primeros m números perfectos
« Respuesta #3 en: 29 Junio 2012, 21:36 pm »

Les dejo el código que resultante, además le he incluido una función que calcula las primeras "l" parejas de números amigos. Gracias por todo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int suma(int n);
  4. void perfectos(int m);
  5. void amigos(int l);
  6. int main(int argc, char *argv[])
  7. {
  8.    int l;
  9.    int n;
  10.    int m;
  11.    printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n");
  12.    printf("Introduce el numero\n");
  13.    scanf("%d",&n);
  14.    printf("El resuldado es: %d\n",suma(n));
  15.    printf("Programa que imprime los primeros m numeros perfectos\n");
  16.    printf("Introduce m\n");
  17.    scanf("%d",&m);
  18.    printf("Los numeros perfectos son:\n");
  19.    perfectos(m);
  20.    printf("Programa que imprime los primeros pares l de numeros amigos\n");
  21.    printf("Introduce l\n");
  22.    scanf("%d",&l);
  23.    printf("Los pares de numeros amigos son:\n");
  24.    amigos(l);
  25.  
  26.  
  27.  
  28.    system("PAUSE");
  29.    return 0;
  30. }  
  31.   int suma(int n){
  32.       int i;
  33.       int d;
  34.       int c;
  35.       c=0;
  36.       for(i=1;i<n;i++){
  37.                        if(n%i==0){
  38.                                   d=i;
  39.                                   c+=d;
  40.                                   }
  41.                        }
  42.                        return c;
  43.       }
  44.       void perfectos(int m){
  45.           int i;
  46.           for(i=1;i<=m;i++){
  47.                             if(suma(i)==i){
  48.                                            printf("%d\n",i);              
  49.                                            }
  50.                             }
  51.           }
  52.       void amigos(int l){
  53.            int i;
  54.            int j;
  55.            for(i=1;i<l;i++){
  56.                             for(j=i+1;j<l;j++){
  57.                                                if(i==suma(j) && j==suma(i)){
  58.                                                              printf("%d-%d\n",i,j);
  59.                                                              }
  60.                                                }
  61.                             }
  62.            }
  63.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con programa que imprime palabra al reves
Programación C/C++
Blaster 6 7,102 Último mensaje 1 Julio 2013, 22:46 pm
por SrCooper
Programa Numeros Perfectos C++
Programación C/C++
HIDE_95 2 3,595 Último mensaje 4 Agosto 2015, 21:34 pm
por HIDE_95
Numeros amigos y numeros perfectos programa en C
Programación C/C++
estudiante_1 2 5,269 Último mensaje 11 Agosto 2015, 23:51 pm
por estudiante_1
Como imprime este programa varios números sin bucles ni recursión
Programación C/C++
geeke 3 2,152 Último mensaje 15 Septiembre 2015, 23:21 pm
por geeke
Programa para calcular numeros perfectos entre 1 y N
Programación C/C++
tokyo13 3 4,773 Último mensaje 27 Febrero 2019, 22:38 pm
por tokyo13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines