对于 python 中的 t 个测试用例,找出数字的除数总数

find total number of divisors of number, for t test cases in python

我做了一个程序来找到一个数字的除数,并用测试用例提交给在线法官,所以我写了这样的代码

num_case=int(raw_input())
num=list()
final_o=[]
for x in xrange(num_case):
     num.append(int(raw_input()))
for h in num:
     result=[int(h)]
for i in xrange(1, h + 1):
    if h % i == 0:
        result.append(i)
a=final_o.append(len(result)-1)
for ff in final_o:
     print ff

在这种情况下,我让用户输入测试用例的数量,例如 3,然后输入数字,例如 12、7 和 36,然后他得到这样的输出 6 2 9,即 12 有 6 个除数,所以这段代码运行良好,但提交时出现内存错误,所以我尝试使用 itertools,因为 for 循环中的范围很小,而 xrange 花费的时间超过 2 秒,但我没有得到任何输出代码

from itertools import count
num_case=int(raw_input())
num=list()
final_o=[]
for x in xrange(num_case):
     num.append(int(raw_input()))
for h in num:
    result=[int(h)]
    n=int(raw_input())
for i in count(1):
    if n % i == 0:
        result.append(i)
    elif count==n+1:
        break
a=final_o.append(len(result)-1)
for ff in final_o:
   print ff

有人有解决此错误的方法吗?请注意,测试用例 2 秒的时间和数字范围是 10^9,测试用例 100 我该怎么做?

def devisors_number(n):
    result = 0
    sqrt_n = int(n**0.5)

    for i in xrange(1, sqrt_n + 1):
        if n % i == 0:
            result += 1

    result *= 2

    if sqrt_n**2 == n:
        result -= 1

    return result


n = int(raw_input("Enter a number: "))
d = devisors_number(n)
print "{0} has {1} devisors".format(n, d)