[Python] Re: prime | pwp... →→→→→进入此内容的聊天室

来自 4n0n4me, 2023-01-15, 写在 Python, 查看 62 次. 这张便签是回复 prime 来自 baba - 对比版本
URL http://www.code666.cn/view/74de8db0
  1. import math, random
  2. tmp_result = dict()
  3. prime_numbers = [2,3]
  4. prime_index = 0
  5. def getPrime(i: int) -> str:
  6.     global tmp_result,prime_numbers,prime_index
  7.     if i == 0:
  8.         tmp = list(map(str,random.choices(prime_numbers,k=random.randrange(3,13))))+['0']
  9.         random.shuffle(tmp)
  10.         tmp = f"0={'*'.join(tmp)}"
  11.         tmp = tmp.replace('*','\\*')
  12.         return tmp
  13.     elif i == 1:
  14.         return "没法分解啊啊啊啊(+﹏+)"
  15.     def _judgePrime(kr: list, ss: int):
  16.         ll = math.floor(math.sqrt(ss))
  17.         for oo in kr:
  18.             if ss % oo == 0:
  19.                 return True
  20.             elif oo > ll:
  21.                 return False
  22.     def _updatePrime():
  23.         dx = prime_numbers[-1]+2
  24.         while _judgePrime(prime_numbers,dx):
  25.             dx += 2
  26.         prime_numbers.append(dx)
  27.         return
  28.     def _handle(ii: int) -> None:
  29.         global prime_index
  30.         kk = math.floor(math.sqrt(ii))
  31.         ww = prime_numbers[prime_index]
  32.         if ii == 1:
  33.             return
  34.         if ii == ww:
  35.             if ii in tmp_result:
  36.                 tmp_result[ii] += 1
  37.             else:
  38.                 tmp_result.update({ii:1})
  39.             return
  40.         while ii%ww:
  41.             if ww > kk:
  42.                 if ii in tmp_result: # 为什么不需要这样
  43.                     tmp_result[ii] += 1
  44.                 else:
  45.                     tmp_result.update({ii:1})
  46.                 return
  47.             else:
  48.                 prime_index += 1
  49.                 if prime_index == len(prime_numbers):
  50.                     _updatePrime()
  51.                 ww = prime_numbers[prime_index]
  52.         _handle(ww)
  53.         _handle(ii//ww)
  54.     _handle(i)
  55.     res = f'{i}={"*".join([f"{k}^{v}^" for k, v in tmp_result.items()])}'
  56.     res = res.replace('*','\\*').replace('^1^','')
  57.     tmp_result.clear()
  58.     prime_index = 0
  59.     return res

回复 "Re: prime | pwp..."

这儿你可以回复上面这条便签

captcha