Números polidivisibles

Introducción

Un número natural es polidivisible si cumple las siguientes condiciones:

  • El número formado por sus dos primeros dígitos es divisible por 2.
  • El número formado por sus tres primeros dígitos es divisible por 3.
  • El número formado por sus cuatros primeros dígitos es divisible por 4.
  • etcétera.

Por ejemplo, el número 345654 es un número polidivisible ya que

  • 34 es divisible por 2,
  • 345 es divisible por 3,
  • 3456 es divisible por 4,
  • 34565 es divisible por 5 y
  • 345654 es divisible por 6.

pero 123456 no lo es, porque 1234 no es divisible por 4.

Enunciado

Definir las funciones

tales que

  • polidivisible es la sucesión cuyos elementos son los números polidivisibles. Por ejemplo,

  • (polidivisiblesN k) es la lista de los números polidivisibles con k dígitos. Por ejemplo,

Comprobar que, para n entre 1 y 5, la cantidad de números polidivisibles de n dígitos es 9*10^(n-1)/n!.

Soluciones

7 Comentarios

  1. Nada de show y read por favor :-P

    1. Por supuesto se puede evitar la función digits si usamos polidivisiblesN que ya lo tiene como parámetro.

      1. Ya lo siento, estoy espeso hoy, la versión buena sería:

  2. (Rápido)

  3. También podemos construirlos de forma (co)recursiva, de forma mucho más eficiente que la primera versión:

    Medición de tiempos:

    Por tanto, no puede haber números polidivisibles de más de 25 cifras, no?

    1. En el artículo de la Wikipedia sobre números polidivisibles, enlazado en el enunciado del ejercicio, se indica que hay un total de 20.456 números polidivisibles el mayor de los cuales es 3608528850368400786036725 que tiene 25 dígitos.

      Con esta definición se calcula rápidamente dicho número

    2. Otra versión (prometo que la última!) con la misma idea pero usando iterate:

Leave a Reply to José A. AlonsoCancel reply