Título: Función lógica que determine si un valor n es un número perfecto
Fecha: 08-05-2023 20:33
Claro, para resolver esta tarea en lenguaje C, se puede escribir una función que reciba como parámetro un número entero positivo n y determine si es un número perfecto o no. Aquí te dejo el código que lo hace: ``` #include <stdio.h> int esNumeroPerfecto(int n){ int sumaDivisores = 0; for(int i=1; i<n; i++){ if(n%i == 0){ sumaDivisores += i; } } if(sumaDivisores == n){ return 1; }else{ return 0; } } int main(){ int num; printf("Ingrese un numero: "); scanf("%d", &num); if(esNumeroPerfecto(num)){ printf("%d es un numero perfecto.\n", num); }else{ printf("%d no es un numero perfecto.\n", num); } return 0; } ``` Primero, definimos una función llamada "esNumeroPerfecto" que recibe como parámetro un número entero positivo n. Dentro de esta función, inicializamos una variable llamada "sumaDivisores" en cero, que se encargará de ir sumando todos los divisores del número n. Luego, utilizamos un ciclo "for" para recorrer todos los enteros positivos menores a n (excluyendo al número mismo). Si el número es divisor de n, lo sumamos a la variable "sumaDivisores". Finalmente, comparamos si la suma de los divisores es igual al número n. Si es así, significa que es un número perfecto y retornamos 1. En caso contrario, retornamos 0. En la función "main", le pedimos al usuario que ingrese un número entero positivo y llamamos a la función "esNumeroPerfecto" para determinar si es un número perfecto. Si lo es, imprimimos un mensaje indicándolo, y si no lo es, imprimimos un mensaje indicando lo contrario.