rom random import randint
deffactors(num, fac =[]):# 每次都从2开始找因数for i inrange(2,int(num**0.5)+1):if num%i==0:
fac.append(i)
factors(num//i,fac)breakelse:# 不可分解了,自身也是个因数
fac.append(num)
facs =[]
n=randint(2,10**8)
factors(n,facs)
result ='*'.join(map(str,facs))if n ==eval(result):print(n,'='+result)# 89295880 =2*2*2*5*797*2801
递归的归并排序
递归的归并排序
defmerge_sort(nums):
n =len(nums)if n <=1:return nums
mid = n //2
left_li = merge_sort(nums[0:mid])
right_li = merge_sort(nums[mid:])
result =[]
left_point,right_point =0,0while left_point <len(left_li)and right_point <len(right_li):if left_li[left_point]< right_li[right_point]:
result.append(left_li[left_point])
left_point +=1else:
result.append(right_li[right_point])
right_point +=1
result += left_li[left_point:]
result += right_li[right_point:]return result