Dado dos números n y m, decimos que m es un múltiplo especial de n si m es un múltiplo de n y m no tiene ningún factor primo que sea congruente con 1 módulo 3.
Definir la función
|
multiplosEspecialesCota :: Int -> Int -> [Int] |
tal que (multiplosEspecialesCota n k) es la lista ordenada de todos los múltiplos especiales de n que son menores o iguales que k. Por ejemplo,
|
multiplosEspecialesCota 5 50 == [5,10,15,20,25,30,40,45,50] multiplosEspecialesCota 7 50 == [] |
Soluciones
|
import Data.Numbers.Primes (primeFactors) multiplosEspecialesCota :: Int -> Int -> [Int] multiplosEspecialesCota n k = [m | m <- [n,2*n..k], all (\p -> p `mod` 3 /= 1) (primeFactors m)] |
Se puede imprimir o compartir con