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)