Archivo de Junio 2009

primos

Junio 16, 2009

void primos(long p[], long t) {

long n = 3, d; /* natural, divisor */

double r; /* raiz de n */

long efp[10] = {2,3,5,7,11,13,17,19,23,29}; // primos

unsigned long np = 10, pp; /* # actual de primos, posicion primo */

int s; /* si primo (1 = si, 0 = no) */

for (pp = 0; pp < np; pp++) p[pp] = efp[pp];

do {

s = 1;

pp = 0;

r = sqrt(n);

do {

d = p[pp++];

if (!(n%d)) s = 0;

} while (s && d < r);

if (s && n > 30) p[np++] = n;

n += 1;

} while (np < t);

}

int primo(long p[], long t, long n) {

/* determina si n es primo */

int s = 1, i = 0; /* si primo */

double r; // raiz de n

long pp = 0, d; /* posicion en p[] */

r = sqrt(n);

do {

d = p[pp++];

if (!(n%d)) s = 0;

} while (s && d < r);

if (n == 1) s = 0;

if (n == 2) s = 1;

return s;

}

int main() {

long lim = 100000, pri[lim], a, b;

int n, k;

primos(pri, lim);

scanf(“%d”, &n);

for (k = 0; k < n; k++) {

scanf(“%ld %ld”, &a, &b);

for ( ; a <= b; a++) if (primo(pri, lim, a)) printf(“%ld\n”, a);

printf(“\n”);

}

printf(“\n\n”);

/* system(“pause”); */

return 0;

}

validación (lógica)

Junio 8, 2009

Validación:

0. entero en un rango [a, b].
1. fecha en formato d, m, a.
2. matrícula en formato “aaaa-ssss”.
3. nombre en formato “Mmmmm Mmmmm…”
4. cédula en formato “sss-sssssss-v”.
5. fecha en formato “dd-mm-aaaa”.
6. string en formato alfanumérico:
   ‘9′: dígito, ‘a’: minuscula, ‘A’: Mayúscula,
   ‘c’: constante. Ejemplo: “78-Bd17″ ::  “99cAa99″.

0:
static bool siEntRan(int a, int b, int n)

1:
static bool siFechVal(int d, int m, int a)

2:
static bool siMatrVal(string m)

3:
static bool siNomVal(string m)

4:
static bool siCedVal(string c)

5:
static bool siFechValStr(string f) 

6:
static bool siMascara(string v, string m)

ecabrera, junio 2009.