[ Foro de C ]

programa que lea un número positivo del teclado y escriba por pantalla los números perfectos menores a él

29-Jan-2023 18:29
Invitado (Malcolm)
1 Respuestas

Hola, necesito ayuda con un programa.
Esta es la descripción de lo que me pidieron hacer:
1.-Escribe un programa que lea un número positivo del teclado y escriba por pantalla los números perfectos menores a él.
Para ello debe definir una función EsPerfecto que reciba un número y devuelva (1)  si es perfecto y  (0) si no lo es.

Un número perfecto: es un número natural que es igual a la suma de sus divisores propios positivos, sin incluirse él mismo


14-Mar-2023 21:44
Invitado (Alejandro Andrade)

¡Hola! Aquí te dejo un programa en lenguaje C que cumple con las especificaciones que mencionaste. Utiliza una función llamada 'EsPerfecto' para determinar si un número es perfecto o no.

#include <stdio.h>

int EsPerfecto(int num){
   int i, suma = 0;
   for(i = 1; i < num; i++){
       if(num % i == 0){
           suma += i;
       }
   }
   if(suma == num){
       return 1;
   } else {
       return 0;
   }
}

int main(){
   int num, i;
   printf("Ingrese un número positivo: ");
   scanf("%d", &num);
   printf("Los números perfectos menores a %d son: ", num);
   for(i = 1; i < num; i++){
       if(EsPerfecto(i)){
           printf("%d ", i);
       }
   }
   printf("\n");
   return 0;
}

Explicación del programa:

1. En la función 'EsPerfecto', se utiliza un bucle 'for' para sumar todos los divisores propios positivos de un número 'num'.
2. Si la suma de los divisores propios es igual a 'num', la función devuelve 1, lo que significa que 'num' es un número perfecto. De lo contrario, devuelve 0.
3. En la función principal 'main', se pide al usuario que ingrese un número positivo.
4. Se utiliza un bucle 'for' para verificar si cada número menor que el número ingresado por el usuario es un número perfecto utilizando la función 'EsPerfecto'. Si es así, se imprime el número por pantalla.
5. El programa termina con el retorno 0 en la función 'main'.

Espero que te sea útil. ¡Saludos!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)