Möbius Function — from Wolfram MathWorld

メビウス関数のリストが欲しい.つまり,[μ(1), μ(2),… ,μ(n)]が欲しいと.

このとき,Haskellでどう書くか.

ぱっと思いつく選択肢:

(a) 定義にしたがって,素因数分解して,素因数を数える.これを,1からnまで繰り返す.

(b) 可変配列をつかって,ふるいのようなことをする.

しかし,(a)は遅い.(b)は可変配列が気にいらない.

可変配列をつかわずに,ふるいのようなことができないか?