Autor
|
Tema: Programa en C que imprime los primeros m números perfectos (Leído 22,408 veces)
|
ERIK546
|
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: #include <stdio.h> #include <stdlib.h> int suma(int n); int main(int argc, char *argv[]) { int n; printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n"); printf("Introduce el numero\n"); printf("El resuldado es: %d\n",suma (n )); return 0; } int suma(int n){ int i; int d; int c; c=0; for(i=1;i<n;i++){ if(n%i==0){ d=i; c+=d; } } return c; }
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:#include <stdio.h> #include <stdlib.h> int suma(int n); void perfectos(int m); int main(int argc, char *argv[]) { int n; int m; printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n"); printf("Introduce el numero\n"); printf("El resuldado es: %d\n",suma (n )); printf("Programa que imprime los primeros m numeros perfectos\n"); printf("Los numeros perfectos son:\n"); perfectos(m); return 0; } int suma(int n){ int i; int d; int c; c=0; for(i=1;i<n;i++){ if(n%i==0){ d=i; c+=d; } } return c; } void perfectos(int m){ int i; for(i=0;i<=m;i++){ if(suma(i)==i){ } } }
Gracias a todos de antemano.
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! el programa anda bien, el problema es esto:
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
|
Hola! el programa anda bien, el problema es esto:
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
|
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:#include <stdio.h> #include <stdlib.h> int suma(int n); void perfectos(int m); void amigos(int l); int main(int argc, char *argv[]) { int l; int n; int m; printf("Programa que devuelve la suma de todos los divisores de un numero n, sin incluirlo\n"); printf("Introduce el numero\n"); printf("El resuldado es: %d\n",suma (n )); printf("Programa que imprime los primeros m numeros perfectos\n"); printf("Los numeros perfectos son:\n"); perfectos(m); printf("Programa que imprime los primeros pares l de numeros amigos\n"); printf("Los pares de numeros amigos son:\n"); amigos(l); return 0; } int suma(int n){ int i; int d; int c; c=0; for(i=1;i<n;i++){ if(n%i==0){ d=i; c+=d; } } return c; } void perfectos(int m){ int i; for(i=1;i<=m;i++){ if(suma(i)==i){ } } } void amigos(int l){ int i; int j; for(i=1;i<l;i++){ for(j=i+1;j<l;j++){ if(i==suma(j) && j==suma(i)){ } } } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda con programa que imprime palabra al reves
Programación C/C++
|
Blaster
|
6
|
7,711
|
1 Julio 2013, 22:46 pm
por SrCooper
|
|
|
Programa Numeros Perfectos C++
Programación C/C++
|
HIDE_95
|
2
|
3,865
|
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,629
|
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,392
|
15 Septiembre 2015, 23:21 pm
por geeke
|
|
|
Programa para calcular numeros perfectos entre 1 y N
Programación C/C++
|
tokyo13
|
3
|
5,300
|
27 Febrero 2019, 22:38 pm
por tokyo13
|
|