Adsence

domingo, 11 de diciembre de 2011

Separar-Numero-Primos-y-Perfectos

Leave a Comment


[caption id="attachment_927" align="aligncenter" width="678"]Separar numeros primos y perfectos Separar numeros primos y perfectos[/caption]


Capturar  por  teclado  los  datos  de  un  vector  de  enteros  de  n  datos (n  dado  por  teclado  y  1<n<200)  y  clasificar  los  datos  del vector en dos vectores uno con los números primos y otro con los números perfectos.


Un número es primo si solo tiene dos divisores, 1 y él mismo, ejemplos 1,2,3,5,7,11 etc.

Un número es perfecto si la suma de sus divisores propios es igual a él mismo. Ejemplo el 6,28, etc.








Por ejemplo para un vector dado por teclado como el siguiente




















240257402817456045


Los datos clasificados en el vector de primos es:











27175


Y el vector de perfectos es









286








[cpp]

/*
<div>Capturar  por  teclado  los  datos  de  un  vector  de  enteros  de  n  datos (n  dado  por  teclado  y  1<n<200)  y  clasificar  los  datos  del vector en dos vectores uno con los números primos y otro con los números perfectos.</div>
<div></div>
<div>Un número es primo si solo tiene dos divisores, 1 y él mismo, ejemplos 1,2,3,5,7,11 etc.</div>
<div>Un número es perfecto si la suma de sus divisores propios es igual a él mismo. Ejemplo el 6,28, etc.</div>
Por ejemplo para un vector dado por teclado como el siguiente
2 40 25 7 40 28 17 45 6 0 4 5
Los datos clasificados en el vector de primos es:
2 7 17 5
Y el vector de perfectos es
28 6

*/

#include< conio.h >
#include< stdio.h >
void portada();
void final();
bool perfecto(int n)
{
int c=0;
for(int i=1;i< n;i++)
{
if(n%i==0)
c=c+i;
}
if(c==n)
return true;
else
return false;
}
bool primo(int n)
{
for(int i=2;i< n;i++)
{
if(n%i==0)
return false;
}
return true;

}

void llenar(int t,int v[])
{
for(int i=0;i< t;i++)
{
printf("v[%d]:",i);
scanf("%d",&v[i]);
}

}
void llenar2(int t,int v[])
{
for(int i=0;i< t;i++)
{
v[i]=-1;
}

}
void dividir(int t,int v[],int pe[],int pri[])
{
//Contadores para ir moviendome en los vectores de numeros primos y perfectos
int cper=0,cpri=0;
for(int i=0;i< t;i++)
{
//Tomo el numero a evaluar
int aux=v[i];
if(perfecto(aux)==true)
{
pe[cper]=aux;
cper++;
}
if(primo(aux)==true)
{
pri[cpri]=aux;
cpri++;
}

}

}

void imprimir(int t,int v[])
{
printf("\n");
for(int i=0;i< t;i++)
{
if(v[i]!=-1)
{
printf("%d |",v[i]);
}

}

}
main()
{
portada();
int t;
printf("Por favor digite tamano del vector:");
scanf("%d",&t);
if(t >0 && t< =200)
{
//Vector general con todos los datos
int v[t];
//Lleno el vector
llenar(t,v);
//Vectores que contrendan los numero perfector y primos
int per[t],pri[t];
//Esta funcion me llena los vectores de -1, es simplemente de guia
llenar2(t,per);
llenar2(t,pri);
//Funcion que me llena los dos vectores anteriores
dividir(t,v,per,pri);
printf("\n Vector General");
imprimir(t,v);
printf("\n Vector Primos");
imprimir(t,pri);
printf("\n Vector Perfectos");
imprimir(t,per);

}

final();
getch();
return 0;
}

void portada(){
printf("...............................................................................\a\n");
printf("................******.*****.** **.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.*** ***.** **.** .** **.**.**.***................\a\n");
printf("................ ** .*****.*******.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.** * **.** .** .*** ....**..**................\a\n");
printf("................**** .** **.** **.** .****.** **....**.****...............\a\n");
printf("..............................jamper91.hostei.com............................\a\n");
printf("\n");
};
void final(){
printf("-------------------------------------------------------------------------------\a\n");
printf ("******************************************************************************\a\n");
printf (" Creado por jamper91@hotmail.com\n");
printf (" Cucuta Campeon\n");
printf ("******************************************************************************\a\n");
printf("-------------------------------------------------------------------------------\a\n");
};

[/cpp]

0 comentarios :