Múltiplos especiales
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
1 |
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,
1 2 |
multiplosEspecialesCota 5 50 == [5,10,15,20,25,30,40,45,50] multiplosEspecialesCota 7 50 == [] |
Soluciones
1 2 3 4 5 6 |
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)] |