Esto es solo para expandir la respuesta de duskwuf, para hacerlo un poco más claro, sin revelarlo todo.
La idea es que puedes cambiar el número bit a bit, comenzando con el bit más significativo, y cada vez que cambies, puedes estar en uno de los cinco estados (uno para cada módulo posible 0 ~ 4), y después de cambiar en todos los bits, el estado en el que se encuentra determina si es divisible entre 5.
Las sugerencias se tratan de averiguar qué es el diagrama de estado, cada vez que se desplaza en un bit nuevo.
Por ejemplo, empiezas en el estado 0, y comenzarás a cambiar en tu número de ejemplo 001110000000
.
Sus estados irían de la siguiente manera:
Number: 001110000000
State : 001324312431
Después de cambiar en el último bit, el estado se convierte en 1 (como en el módulo 5 siendo 1), por lo que el número no es divisible entre 5.
Las reglas para determinar el diagrama de estado se basan en el hecho de que cada vez que ingresa un bit, se multiplica por 2 y se agrega 0 o 1, dependiendo del nuevo bit que se esté cambiando. El siguiente estado solo depende en el estado anterior y el nuevo bit, por lo que el hardware es muy simple. La desventaja es que necesita tantos ciclos de reloj como bits de entrada. Pero como no se han especificado restricciones, no hay problema.
Es posible que deba agregar un contador de bits y / o algún tipo de señal de sincronización.