我正在尝试解决一个涉及打印给定数字所有约数的乘积的问题。测试用例的数量是1 <= t <= 300000,数字本身可以在1 <= n <= 500000范围内。
我编写了以下代码,但它总是超过2秒的时间限制。有没有办法加快代码速度?
from math import sqrt
def divisorsProduct(n):
ProductOfDivisors=1
for i in range(2,int(round(sqrt(n)))+1):
if n%i==0:
ProductOfDivisors*=i
if n/i != i:
ProductOfDivisors*=(n/i)
if ProductOfDivisors <= 9999:
print ProductOfDivisors
else:
result = str(ProductOfDivisors)
print result[len(result)-4:]
T = int(raw_input())
for i in range(1,T+1):
num = int(raw_input())
divisorsProduct(num)
谢谢。