import math # 定义最大数值范围 N = 200100 # 标记数组,用于标记非质数 b = [False] * N # 存储所有质数 c = [] # 存储每个数的最小质因数 d1 = [0] * N # 初始化函数,用于预处理质数和质因数 def init(): # 计算根号N的值,作为筛选质数的上限 m = int(math.sqrt(N + 2)) + 2 # 0和1不是质数,标记为True b[0] = b[1] = True # 使用埃拉托斯特尼筛法标记非质数 for i in range(2, m): if not b[i]: for j in range(i * i, N, i): b[j] = True # 将所有质数添加到列表c中 for i in range(2, N): if not b[i]: c.append(i) # 遍历所有质数,记录每个数的最小质因数 for x in c: for j in range(x, N, x): if d1[j] == 0: d1[j] = x # 查询函数,用于获取一个数n的质因数分解 def query(n): v = [] # 当n大于1时,继续分解质因数 while n > 1: res = d1[n] # 获取n的最小质因数 cnt = 0 # 统计该质因数的个数 while n % res == 0: n //= res cnt += 1 # 将质因数及其个数添加到列表v中 v.append((res, cnt)) return v # 调用初始化函数 init() # 读取查询次数 t = int(input()) # 对每个查询进行处理 for _ in range(0, t): x = int(input()) # 读取查询的数 v = query(x) # 获取该数的质因数分解 ans = 1 # 初始化权值和 # 如果只有一个质因数,权值和为2倍该质因数的个数 if len(v) == 1: ans = 2 * v[0][1] else: # 否则,计算所有质因数个数的累乘加1 for res, cnt in v: ans *= cnt + 1 # 输出结果 print(ans)