No hagas copia y pega que si tu profesor busca en google el codigo le saldra este post xD
Código
Si no entiendes algo pregunta.
#include <iostream> using namespace std; unsigned long long Potencia (unsigned int Base, unsigned int Exponente) { unsigned long long potencia = 1; int i; if (Exponente==0) return 1; //Error. else { for(i=0;i<Exponente;++i) { potencia*=Base; } } return potencia; } bool EsPrimo (unsigned long long Numero) { int Contador = 0; bool esPrimo = false; for (int i=1;i<(Numero+1); ++i) { if(Numero%i==0) { ++Contador; } } if(Contador!=2) { //Mete un cout por aqui de Numero si quieres para ver el numero que no es primo. return esPrimo; } else { esPrimo = true; //Mete un cout por aqui de Numero si quieres, para ver el numero que si es primo. return esPrimo; } } int main() { unsigned int Numero = 1; //Numero a comprobar si es primo. unsigned int Contador = 1; //Contador para bucle do while. unsigned long long NumeroPrimoM; unsigned long long NumeroPerfecto; do { if ( EsPrimo(Numero) ) //Funcion EsPrimo retorna true si el valor de Numero es primo. { NumeroPrimoM = Potencia(2,Numero) -1; //Formula para sacar primo de Mersenne. //Mete un cout aqui de NumeroPrimoM si quieres conocer a los primos de Mersenne. NumeroPerfecto = (NumeroPrimoM*(NumeroPrimoM +1))/2; //Formula para sacar numero perfecto utilizando numero primo de Mersenne. cout << Contador << " - Numero Perfecto: " << NumeroPerfecto << endl; ++Contador; //Para el bucle while y seguir calculando hasta 10. ++Numero;//Probemos si el siguiente numero es primo. } else { ++Numero; //Si el valor en Numero no es primo, prueba el siguiente. } } while (Contador != 11); return 0; }