El teorema de Midy

El ejercicio de hoy, propuesto por Antonio García Blázquez, tiene como objetivo comprobar la veracidad del Teorema de Midy, este teorema dice:

Sea a/p una fracción, donde a < p y p > 5 es un número primo. Si esta fracción tiene una expansión decimal periódica, donde la cantidad de dígitos en el período es par, entonces podemos partir el período en dos mitades, cuya suma es un número formado únicamente por nueves.

Por ejemplo, 2/7 = 0’285714285714… El período es 285714, cuya longitud es par (6). Lo partimos por la mitad y las sumamos: 285+714 = 999.

Definir la función

tal que (teoremaMidy n) se verifica si para todo todo número primo p menor que n y mayor que 5 y todo número natural a menor que p tales que la cantidad de dígitos en el período de a/p es par, entonces podemos partir el período de a/p en dos mitades, cuya suma es un número formado únicamente por nueves. Por ejemplo,

Además, comprobar el teorema de Midy usando QuickCheck.

Soluciones

5 Comentarios

      1. Lo que no parece que tenga mucho sentido esta propiedad ya que si teoremaMidy n == True, entonces ya están comprobados todos los m <= n.

        En mi respuesta he intentado ajustar las pruebas a los posibles candidatos que pudieran demostrar la falsedad del teorema.

        1. –Totalmente cierto, se me fue la cabeza acostumbrado a poner los == en los quickChecks. ahí va corregido

          prop_midy :: Integer -> Property
          prop_midy n = n>0==> teoremaMidy n

          +++ OK, passed 100 tests.
          (2.34 secs, 496107128 bytes)

Escribe tu solución