Euler Project problem 204 が短く書けてうれしい

ヴァァァー。
ひっそりたまにやってるProject Euler。problem 204が4行で書けたのでうれしい。

以下はhttp://odz.sakura.ne.jp/projecteuler/index.php?Problem%20204より。

ハミング数とは, どの素因数も5以下であるような正整数のことである. 最初から順に並べると, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15となる. 10^8以下のハミング数は1105個ある.

素因数がn未満の正整数を, type nの一般化ハミング数と呼ぶことにする. するとハミング数はtype 5の一般化ハミング数である.

10^9以下のtype 100の一般化ハミング数の個数を答えよ.

バックトラックを使ったプログラムで、実行にかかる時間は手元のinspiron mini9で50秒ぐらい。
最後に、ハミング数に1も含まれるのを気づかずに??となってしまった。

p = filter(lambda n: all(n%x!=0 for x in range(2,n)), range(2, 100))
r = range(len(p))
f = lambda i,a: 1 + sum(f(j, a*p[j]) for j in r[i:] if a*p[j] <= 10**9)
print 1 + sum(f(i, p[i]) for i in r)