かなりへぼいけど俺も書いてみた。
penII 233 * 192MB のWin98で結構さくさく走って逆にびっくりしました。
でわお目汚しを。
def sosu():
 yield 2
 yield 3
 i = 4
 while 1:
  for j in sosu():
   if i % j == 0:break
   if j*j > i :
    yield i
    break
  i = i + 1
def printsosu(e):
 for s in sosu():
  if s > e:return
  else:print s
printsosu(50)

最初に2と3をyieldしてるのは(i % 6)によってループを
省こうとしてた名残です。(十分早いのでやらなかった)
アドバイスきぼんぬ。