Un numero perfecto es un numero natural cuyo valor coincide con la suma de todos sus divisores propios,
es decir todos sus divisores menores que el (incluido el 1). Por ejemplo, el numero 28 se dice que es un
numero perfecto porque su valor coincide con la suma de sus divisores: 28 = 1 + 2 + 4 + 7 + 14.
Escribir un programa en C++ que lea por teclado un numero de cifras (mayor que 1) e imprima por pantalla el primer numero perfecto con ese numero de cifras o, en caso de que no exista, imprima un
mensaje indicando que no existe un numero perfecto con ese numero de cifras.
Aqui esta el algoritmo que yo cree , pero no me funciona. Me deja compilarlo pero al poner el numero de cifras deseado no me saca nada por pantalla... Podriais indicarme un poco en que he fallado , gracias
Código
#include <iostream> #include <math.h> using namespace std ; int main () { unsigned n , b , a , perf ; cout << "Introduzca el numero de cifras: " ; cin >> n ; b = pow ( 10 , n) - 1 ; perf = 0 ; for ( unsigned i = pow(10 , (n-1)) ; i <= b ; i++ ) { for (unsigned j = 2 ; j <= i ; j++ ) { if ( (i % j) == 0 ) { a = i / j ; perf = a + perf ; } } if ( perf == i ) { cout << "Numero perfecto: " << perf << endl ; } } }
Mod: Los códigos deben ir en etiquetas GeSHi