2007-05-01から1ヶ月間の記事一覧

組み合わせを列挙するイテレータ

Python 2.6以降はitertools.combinationsで同様のことができます。以下の記述はPython 2.3〜2.5向けです。 リストからn個取り出したものを返していく。 def gen_comb(L,n): if n == 0: yield [] else: for i,x in enumerate(L): for L1 in gen_comb(L[i+1:],…

素数を列挙するイテレータ

単純に2から割り算を繰り返すものでもいいのですが、そこそこ効率がいいものにするため、最初にエラトステネスの篩をかけるバージョンを作ってみます。まず2、3、5の倍数を削除した数列を1周期分(0〜29)だけ作成します。あとは周期30(=2×3×5)を加算しな…