¡Hora estelar!

Mar 01 2023
Mi amigo Doug hizo una solicitud de función para el reloj métrico solar: agregar un indicador que le indique cuándo la hora que se muestra es un número primo. Esto concuerda con mi obsesión por los números primos y mi deseo de seguir jugando con este proyecto sin cesar.

Mi amigo Doug hizo una solicitud de función para el reloj métrico solar : agregar un indicador que le indique cuándo la hora mostrada es un número primo. Esto concuerda con mi obsesión por los números primos y mi deseo de seguir jugando con este proyecto sin cesar.

Así que por supuesto que lo hice.

Decidí no considerar el tiempo hh:mm como un solo número para este propósito. Las horas y los minutos cuentan cantidades de manera diferente, por lo que no parece correcto considerarlo como un escalar. Pero tanto el tiempo solar como el métrico local tienen sentido como escalares.

Pensé que calcularía todos los primos menores que el número máximo visualizable (9999) al inicio, los guardaría en un vector disperso y haría una búsqueda rápida a pedido para ver si el tiempo era primo. Doug y yo hablamos sobre el enfoque. Razonó que, si Elon hiciera algún cambio en la simulación en la que todos vivimos, entonces los números primos podrían cambiar, por lo que sería más seguro calcularlos en el encendido. Eso tenía sentido.

Desafortunadamente, mi placa Arduino Uno Wifi Rev2 no tiene suficiente memoria para las estructuras de datos del algoritmo Sieve of Eratosthenes y el vector de búsqueda que quería usar. Una de las cosas interesantes de la plataforma de cómputo Arduino es que tiene recursos limitados. Me recuerda a escribir aplicaciones en el Apple II cuando estaba en la escuela secundaria: hay que prestar atención a hacer las cosas pequeñas y eficientes.

Resulta que puedes determinar la primalidad de cualquier número hasta 10 000 comprobando su divisibilidad entre los primos hasta el primer primo después de la raíz cuadrada de 10 000. Esto no es suficiente para calcular los factores, solo para determinar la primalidad. No expondré la teoría de los números aquí porque es divertido descubrirlo por ti mismo.

Codifiqué la matriz [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79 , 83, 89, 97, 101] en el reloj y pruebo la divisibilidad cada vez que pinto una hora métrica en una de las pantallas de 4 dígitos y 7 segmentos. En realidad, esto es bastante eficiente: la mitad de los números se eliminan al compararlos con 2, y así sucesivamente.

Cuando la hora es prima, enciendo el punto decimal que sigue al dígito final:

¡La hora métrica local es primordial!

Me gusta darme cuenta cuando es hora de máxima audiencia. Sucede muy a menudo que tanto la hora solar como la métrica local que se muestran son las principales. ¡Eso es una doble descarga de endorfinas de teoría numérica!