Hola después de que alguien me comento en alguna clase como presentar un numero perfecto o no perfecto, y ademas sus divisores.
Esto fue para una clase básica de borland C++. Aquí el código. Cualquier comentario gracias.
//PROGRAMA QUE LEE UN NUMERO Y MUESTRA SUS DIVISORES
//Un nº es perfecto cuando es igual a la suma de sus divisores excepto el mismo
/*EJEMPLO DE NUMEROS PERFECTOS
6 = 1 + 2 + 3,
28 = 1 + 2 + 4 + 7 + 14,
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
*/
/*declaracion de variables:
"cont" sera la variable que controle todos los indices del 1 al n,,,
"divisor" sera mi variable contador y al mismo tiempo el divisor a presentar
"residuo" sera el encargo de controlar la presentacion el divisor (cont)
"suma" llevara el control de sumas de "divisor" y se presentará por pantalla solo si es numero perfecto.
importante: siempre inicializar las variables de calculo, el % coge la parte entera del residuo */
#include<conio.h>
#include<stdio.h>
void main()
{
int num, divisor=0,cont=0,residuo=0, suma=0;
clrscr();
printf("nn Ingrese su numero: " );
scanf("%i", &num);
//ciclo DO/WHILE para divisores y residuos
cont++;
do
{ residuo = num%cont;
if(residuo==0)
{ suma = suma +cont;
divisor=cont; //asigno el valor del contador actual al divisor
printf("nnDivisor: %in", divisor);
cont++;
}
else
{ //Si el residuo es diferente de 0, entonces solo incrementar el contador pero no asigne el contador al divisor
//tampoco muestre ningun mensaje por pantalla
if(residuo!=0)
{ cont++;
}
}
}while(suma+1< num); //suma mas uno para que condicione a todos los numeros perfectos y no perfectos
//sale del ciclo si se cumple la suma.. Presenta mensajes
if(suma==num)
{
printf("nnEl numero es PREFECTO: %i ", suma);
}
else
if(suma!=num)
{
printf("nnEl numero NO es PREFECTO: %i ", suma);
}
getch();
}
Esto fue para una clase básica de borland C++. Aquí el código. Cualquier comentario gracias.
//PROGRAMA QUE LEE UN NUMERO Y MUESTRA SUS DIVISORES
//Un nº es perfecto cuando es igual a la suma de sus divisores excepto el mismo
/*EJEMPLO DE NUMEROS PERFECTOS
6 = 1 + 2 + 3,
28 = 1 + 2 + 4 + 7 + 14,
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
*/
/*declaracion de variables:
"cont" sera la variable que controle todos los indices del 1 al n,,,
"divisor" sera mi variable contador y al mismo tiempo el divisor a presentar
"residuo" sera el encargo de controlar la presentacion el divisor (cont)
"suma" llevara el control de sumas de "divisor" y se presentará por pantalla solo si es numero perfecto.
importante: siempre inicializar las variables de calculo, el % coge la parte entera del residuo */
#include<conio.h>
#include<stdio.h>
void main()
{
int num, divisor=0,cont=0,residuo=0, suma=0;
clrscr();
printf("nn Ingrese su numero: " );
scanf("%i", &num);
//ciclo DO/WHILE para divisores y residuos
cont++;
do
{ residuo = num%cont;
if(residuo==0)
{ suma = suma +cont;
divisor=cont; //asigno el valor del contador actual al divisor
printf("nnDivisor: %in", divisor);
cont++;
}
else
{ //Si el residuo es diferente de 0, entonces solo incrementar el contador pero no asigne el contador al divisor
//tampoco muestre ningun mensaje por pantalla
if(residuo!=0)
{ cont++;
}
}
}while(suma+1< num); //suma mas uno para que condicione a todos los numeros perfectos y no perfectos
//sale del ciclo si se cumple la suma.. Presenta mensajes
if(suma==num)
{
printf("nnEl numero es PREFECTO: %i ", suma);
}
else
if(suma!=num)
{
printf("nnEl numero NO es PREFECTO: %i ", suma);
}
getch();
}