Tôi đang làm vấn đề 21 trong eulerproject. Một phần yêu cầu tìm danh sách các ước số thích hợp của một số. nghĩa là phần còn lại của n
và một số ít hơn n
. Vì vậy, tôi đã thực hiện điều này Haskell, nhưng GHCI tức giận với tôi.Lập danh sách các ước số trong Haskell
divisors n =[ n | n <- [1..(n-1)], n `rem` [1..(n-1)] ==0 ]
Vấn đề là tôi không biết làm thế nào để thực hiện:
n `rem` [1..(n-1)]
để nó chỉ trả về số thấp hơn n
mà chia đều thành n
.
Tại sao danh sách hiểu không phải là rất Haskell? Ngoài ra, một câu hỏi nhỏ, có cách nào để tìm tổng của tổng của tất cả các danh sách trong một danh sách không? –
Tôi không phải là một cựu chiến binh Haskell bởi bất kỳ phương tiện, nhưng tôi đã không thực sự nhìn thấy bất kỳ sự hiểu biết danh sách được sử dụng trong bất kỳ thư viện Haskell, ví dụ. Câu trả lời nhỏ: 'sum $ map sum x', chẳng hạn như' sum $ map sum [[1,2,3], [4,5,6], [7,8,9]] 'dẫn đến 45. –
Hoặc 'sum. concat', lần đầu tiên tạo một danh sách lớn. –