>>> single_factors(2)
2
>>> single_factors(4096) # 4096 == 2**12
2
>>> single_factors(85) # 85 == 5 * 17
85
>>> single_factors(10440125) # 10440125 == 5**3 * 17**4
85
>>> single_factors(154) # 154 == 2 * 7 * 11
154
>>> single_factors(52399401037149926144) # 52399401037149926144 == 2**8 * 7**2 * 11**15
154
def single_factors(number):
dic_number={}
for i in range(2,number+1): #这里一定是加1,不然当factor为质数时返回的结果只有1
while number%i==0:
dic_number[i]=dic_number.get(i,0)+1
number=number//i #采用//可以极大的节约等待时间,因为操作对象是证书而不再是浮点数
if number==1:
break
final=1
for m in dic_number.keys():
final=final*m
return final
a=single_factors(52399401037149926144)
print(a)