Pandigitales tridivisibles

El número 4106357289 tiene la siguientes dos propiedades:

  • es pandigital, porque tiene todos los dígitos del 0 al 9 exactamente una vez y
  • es tridivisible, porque los sucesivos subnúmeros de tres dígitos (a partir del segundo) son divisibles por los sucesivos números primos; es decir, representado por d(i) el i-ésimo dígito, se tiene

Definir la constante

cuyos elementos son los números pandigitales tridivisibles. Por ejemplo,

Soluciones

4 Comentarios

  1. Solo hay seis números con esta propiedad.

  2. Más eficiente:

  3. pre lang=”haskell”

    import Data.Numbers.Primes

    import Data.List

    pandigitalesTridivisibles ::[Integer]
    pandigitalesTridivisibles = [read x |x<- pandigitales,esTridivisible x]

    pandigitales :: [[Char]]
    pandigitales = [xs|xs Bool
    esTridivisible (x:xs) = tridivisible xs primes

    tridivisible :: [Char] -> [Int] -> Bool
    tridivisible [a,b] _= True
    tridivisible (x:xs) (y:ys) = mod z y == 0 && tridivisible xs ys
    where z = (read (take 3 (x:xs))::Int)

    /pre

Escribe tu solución