Se cancela el cómic temporalmente. Razón: muerte prematura de ordenador

Pues eso, mi fiel portátil murió ayer, concretamente después de acabar los dibujos de la página y mientras abría el Gimp para maquetarlo.

Así que mientras no pueda recuperar los datos no habrá cómic, como es lógico.

PD: A la pérdida del cómic hay que incluirle la de la lista de números primos. >_<

Anuncios

Proyectos que avanzan

Por un lado, Cursed Night ya ha avanzado un poco. Bastante poco, pero ha avanzado.

Y por otro lado, la lista de números primos cuenta ya con más de 10 millones de números. Dentro de poco serán publicados en 100 cómodas listas de 1 Mb cada una. NOTA: NO se garantiza que sean números primos. En principio debería serlo, puesto que no se ha detectado ninguna anomalía en la lista demasiado grande; pero basta con que falte uno para que gran parte del trabajo se haya ido al garete.

Permanezcan a la espera ^^.

Sencillo algoritmo de cálculo de números primos

Se dice que el método más efectivo, pero mas lento, es el llamado “la cuenta de la vieja“. Básicamente, consiste en no usar atajos, sino usar la definición. Por ejemplo, 23 es 2*2*2, que viene siendo 2+2+2+2.

Para números grandes es muy costoso, porque como es obvio, tardaríamos mucho. Pero gracias a los ordenadores, que son capaces de hacer cantidades ingentes de operaciones, el trabajo es muy rápido.

Para la calculación de números primos, el método de la vieja sería el de la definición de número primo:

El conjunto de los números primos es un subconjunto de los números naturales que engloba a todos los elementos de este conjunto mayores que 1 que son divisibles únicamente por sí mismos y por la unidad.

Wikipedia.org

Es fácil: Dividimos un número entre todos los primos conocidos que sean menores que él (sin contar al uno como primo). Si el resultado de todas las operaciones deja resto (si operamos con números enteros, si operamos con reales sería si la operación deja decimales), entonces ese número es primo.

Como dividirlo entre todos los números primos es una exageración, estableceremos un límite en sqrt(n) (raiz cuadrada de n), siendo n el número que queremos comprobar.

Se escoge sqrt(n) debido a que todos los números que dividen a n se encuentran en dos mitades, los menores que sqrt(n) y los mayores. Los que son mayores que sqrt(n) son el resultado de dividir n entre un número menor que sqrt(n). La demostración matemática de esto, sencillamente, no la recuerdo :P.

Otra forma de optimizar el proceso es limitar la comprobación a los números impares, y obviando la comprobación de que sea divisible entre 2. Así nos ahorramos dividir un número par entre 2, que ya sabemos que nos va a dar un número no primo y dividir un número impar entre 2, ya que sabemos que 2 no divide números impares.

Puede parecer una chorrada, pero cualquier ahorro es un gran ahorro, porque se repetirá durante mucho tiempo.

El algoritmo, en pseudocódigo, sería entonces:

Variables:

  • lista : Lista de todos los números primos.
  • n: número que queremos comprobar si es primo o no.
  • primo: Número primo que comprobaremos si divide a n.
  • limite: sqrt(n), sólo se comprueban los números primos menores o iguales a este número.
  • es_primo: Variable booleana de control. Indica si un número es primo o no. Se inicializa a VERDADERO.

Programa:

1. Inicializamos n {Nota: Si sólo queremos comprobar ese número, no puede ser mayor que el mayor primo almacenado al cuadrado, si queremos hacer una lista de primos no puede ser mayor que el último primo almacenado}
2. Mientras n < máximo {el número más grande con el que puede operar el lenguaje} hacer

1. {Inicialización de variables:} es_primo=VERDADERO limite=sqrt(n) primo=primer_primo(lista)
2. Mientras (es_primo=VERDADERO) y (primo<=limite) y (lista no ha acabado) hacer

1. Si (entero módulo primo) = 0
2. entonces es_primo=FALSO
3. Sino: primo=siguiente_primo(primo, lista)

3. Fin Mientras
4. Si es_primo=verdadero
5. entonces almacenar_primo(primo, lista)
6. n=n+2 {recordemos que solo comprobamos los números impares}

3. Fin Mientras

Lo probé en Pascal, siendo la lista un archivo de texto (para poder publicarla después en este mismo blog) y comprueba un millón de números en pocos minutos, aunque como es obvio cada vez tardará mas. Ahora mismo, después de 3 horas aproximadamente, ha superado ya el número 37*106. Esa misma lista ocupa unos 20 Mb, así que probablemente la suba a Megaupload o a un sitio de esos.

El malo maloso asesino del ordenador

Me encontraba yo ayer por la noche tan tranquilo jugando al Frets On Fire, gastando teclado, como quien dice, cuando me ocurrió una de las experiencias más sobrecogedoras de mi vida.

Como me aburría de la canción que estaba tocando, la interrumpí y la cambié.

Pero al parecer, eso no le gustó.

La pantalla se quedó estancada en la imagen de cargando, para luego aparecer fugazmente la canción de Avalancha seleccionada y… empezó a sonar la canción…

Intenté tocar alguna tecla, pero todas estaban bloqueadas. Cada vez que probaba a tocar una me aparecia un error en la pantalla…

Y para mi sorpresa, la canción se acabó como si la hubiese completado… A los 10 segundos de haberla empezado…

Supuse que era un simple bug, algo habitual en los programas de ordenador. Y aprovechar que se había acabado aquella locura de la canción y que estaba en el menú de fin de canción para probar suerte con una nueva era algo lógico… pero entonces, él se reveló…

Una risa cacareante y repetitiva se oía a través de los altavoces de mi ordenador: HA-HAHA-…

Me levanté de un salto de la silla, apagué los altavoces, apagué el ordenador de una patada y me largué de la habitación corriendo a toda velocidad.

Luego volví, encendí el ordenador y me puse otra vez a tocar, para ver si lo lograba atraer; pero no pasó nada.

La próxima vez que mi hermana se deje el messenger en su sesión encendido y con capacidad de recibir zumbidos mientras esté yo con el ordenador es bastante posible que sea yo el que la mate a ella.

Maldito teclado loco

ARGH!!

¡Esto es un infierno, dionmio!

Por alguna razón desconocida para los simples mortales como usted, yo y las ratas de campo (que no las de laboratorio), el teclado de mi portátil de vez en cuando se vuelve loco y empieza a escribir solo. Y eso en el mejor de los casos.

En informática médica (si, esa misma que se encarga de eliminar viruses y limpiar los teclados) se denomina “locura transitoria de teclado”. O eso me dijeron. También dijeron que dejara de llamar, que no existía ninguna cura.

Así que recurrí al sistema médico patentado por Ibáñez, y por ahora funciona, es mas: está funcionando ¡FUNCIONANDO!

Es increíble ver como los problemas de informática, la probablemente tecnología más avanzada y delicada del mundo, se sigan arreglando como viene haciendo el  ser humano desde tiempos ignotos: a hostias.