sábado, 25 de septiembre de 2010

criba de eratostenes y girar un numero entero

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <string>
#include <vector>
#include <math.h>
#define MAX 32

using namespace std;
//Recorre una tabla marcando los multiplos de cada entero si el numero nunca fue marcado sera primo
//inicia en 2 y se comienza a multiplicar en 2 por que si es desde uno se marcaría a si mismo
void bprimos(int a[]){
for(int i=2;i<MAX;i++)
for(int j=2;j<MAX;j++)
if(i*j<MAX)
a[i*j]=1;
}
//tomas el modulo 10 del numero y eliminas el modulo dividiendo entre10
//ejemplo 15%10 =5 15/10=1
//el resultado del modulo lo guardas y lo multiplicas por 10 recorriendo su posion resultado=5*10=50
// repites el primer paso y sumas a la cantidad al resultado
// 1%10=1 1/10=0 resultado+1=51*10=510
//Al final devuelves el valor final/10 por que cada iteracion recorre un cero la cantidad resultado=510/10=51

int invierte(int n)
{
int i;
for (i=0;n>0;n/=10,i*=10)
i+=n%10;
return i/10;
}


int main(int argc, char *argv[])
{
int a[MAX];
memset(a,0,sizeof(a));
bprimos(a);
int n=0;
for(int i=2;i<MAX;i++){
if(a[i]==0)
if( a[invierte(i)] == 0 && i<= invierte(i) ) {
n++;
printf("%d,",i);
}
}

cout<<endl<<"total;"<<n<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Publicar codigo en Blogger u otra web

http://blogcrowds.com/resources/parse_html.php