import math, random tmp_result = dict() prime_numbers = [2,3] prime_index = 0 def getPrime(i: int) -> str: global tmp_result,prime_numbers,prime_index if i == 0: tmp = list(map(str,random.choices(prime_numbers,k=random.randrange(3,13))))+['0'] random.shuffle(tmp) tmp = f"0={'*'.join(tmp)}" tmp = tmp.replace('*','\\*') return tmp elif i == 1: return "没法分解啊啊啊啊(+﹏+)" def _judgePrime(kr: list, ss: int): ll = math.floor(math.sqrt(ss)) for oo in kr: if ss % oo == 0: return True elif oo > ll: return False def _updatePrime(): dx = prime_numbers[-1]+2 while _judgePrime(prime_numbers,dx): dx += 2 prime_numbers.append(dx) return def _handle(ii: int) -> None: global prime_index kk = math.floor(math.sqrt(ii)) ww = prime_numbers[prime_index] if ii == 1: return if ii == ww: if ii in tmp_result: tmp_result[ii] += 1 else: tmp_result.update({ii:1}) return while ii%ww: if ww > kk: tmp_result.update({ii:1}) return else: prime_index += 1 if prime_index == len(prime_numbers): _updatePrime() ww = prime_numbers[prime_index] _handle(ww) _handle(ii//ww) _handle(i) res = f'{i}={"*".join([f"{k}^{v}^" for k, v in tmp_result.items()])}' res = res.replace('*','\\*').replace('^1^','') tmp_result.clear() prime_index = 0 return res