Мне нужно определить список чисел, единственными основными факторами которых являются 2, 3 и 5, номера Хэмминга. (Ie числа в виде 2^i * 3^j * 5^k. Последовательность начинается с 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...)Номера Хэмминга в Haskell
Я могу сделать это с помощью функции factors
или иначе. Нижеследующие factors
должны возвращать факторы его аргумента. Полагаю, что я правильно ее реализовал.
factors :: Int -> [Int]
factors n = [x | x <- [1..(div n 2) ++ n], mod n x == 0]
Я попытался составить список 2^я * 3^J * 5^к, используя списочные, но застрял на написание охраннику:
hamming :: [Int]
hamming = [n | n <- [1..], „where n is a member of helper“]
helper :: [Int]
helper = [2^i * 3^j * 5^k | i <- [0..], j <- [0..], k <- [0..]]
BTW, функция 'факторов' имеет синтаксическую ошибку. С наименьшим возможным изменением его можно зафиксировать как «факторы n = [x | x <- [1 .. (div n 2)] ++ [n], mod n x == 0] '. – Palec