AIZU ONLINE JUDGEの0009の問題を解くために以下のようなコードを提出したのですが、「Runtime Error」が出てしまいます。簡単な問題かもしれませんが原因がわかる方、お答えください。

import math
import sys

def prime_calc(n):
    rootN = math.floor(math.sqrt(n))
    prime = [2]
    data = [i + 1 for i in range(2,n,2)]
    while True:
        p = data[0]
        if rootN <= p:
            return len(prime + data)
        prime.append(p)
        data = [e for e in data if e % p != 0]

def main():
    l = []

    for line in sys.stdin:
        l.append(int(line))        

    for line in l:
        print(prime_calc(line))

if __name__ == "__main__":
    main()

追記:tanalab2 さんの解答のとおりにしたのですが、なぜか「Runtime Error」が出てしまいます。原因は何でしょうか?

追記:tanalab2さんのご指摘の通りのコードにしました。

追記:以下の入力を試しましたが問題はありませんでした。

10
3
11