Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/02/2013, 02:24
Avatar de pepitogrillo13051993
pepitogrillo13051993
 
Fecha de Ingreso: febrero-2013
Mensajes: 20
Antigüedad: 11 años, 3 meses
Puntos: 0
Información Programa básico c/c++ (tutorial 5.3)

Realizar un programa que localiza los números perfectos existentes hasta un valor entero y positivo que se introducirá por teclado, guardándolos en un vector numérico de tipo entero para presentarlos en pantalla una vez esté rellenado con los valores encontrados.
Un número es perfecto si la suma de sus divisores exactos, exceptuando su propio valor, es igual a ese número (no hay muchos). Por ejemplo el 6 (1 +2 +3) el 28 (1 +2 +4 +7 +14)

#include <iostream>
#include <stdio.h> /* printf y scanf */
#include <stdlib.h> /* Lo uso para que funcione el system("cls") i rand() */
#include <string.h> /* strcopy(), gets(), strcat() */

using namespace std;

int main()
{

int numero, divisor, suma, perfectes[5], conta, unitats;

printf("Els nombre perfectes son:\n\n");
conta = 0;
numero = 1;
while(conta < 5){
unitats = numero % 10;
suma = 0;
divisor = numero / 2;
if(unitats == 6 || unitats == 8){
while(divisor > 0 && suma <= numero){
if(numero % divisor == 0){
suma = suma + divisor;
}
divisor = divisor - 1;
}
}

if(numero == suma){
perfectes[conta] = suma;
printf("\t==> %d\n", perfectes[conta]);
conta = conta + 1;
}

if(unitats == 6)
numero = numero + 2;
else if(unitats % 10 == 8)
numero = numero + 8;
else
numero = numero + 1;
}

return 0;
}