mlymath 0.3.0b2__py3-none-any.whl → 0.4.0b2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
RSA/RSA.py CHANGED
@@ -37,6 +37,7 @@ def get_rsa_key(p: int, q: int) -> Tuple[Tuple[int, int], Tuple[int, int]]:
37
37
  return d + phi
38
38
 
39
39
  e = random.randint(1, phi)
40
+ from mlymath.math import gcd
40
41
  while gcd(e, phi) != 1: # 直接调用模块级 gcd 函数
41
42
  e = random.randint(1, phi)
42
43
 
_random/__init__.py ADDED
@@ -0,0 +1,23 @@
1
+ from ._random import (
2
+ randint,
3
+ randfloat,
4
+ randlst,
5
+ randls_float,
6
+ randint_notsame,
7
+ randfloat_notsame,
8
+ randlst_notsame,
9
+ randls_float_notsame,
10
+ random_help
11
+ )
12
+
13
+ __all__ = [
14
+ "randint",
15
+ "randfloat",
16
+ "randlst",
17
+ "randls_float",
18
+ "randint_notsame",
19
+ "randfloat_notsame",
20
+ "randlst_notsame",
21
+ "randls_float_notsame",
22
+ "random_help"
23
+ ]
_random/_random.py ADDED
@@ -0,0 +1,91 @@
1
+ from random import randint, uniform, sample, shuffle, getrandbits
2
+
3
+ def randint(a, b):
4
+ """
5
+ 返回[a,b]之间的随机整数
6
+ a <= return <= b
7
+ """
8
+ return randint(a, b) # 使用标准库实现
9
+
10
+ def randfloat(a, b):
11
+ """
12
+ 返回[a,b]之间的随机浮点数
13
+ a <= return <= b
14
+ """
15
+ # 使用标准random生成浮点数
16
+ return a + (b - a) * (getrandbits(32) / (2**32 - 1)) # 替换randbits方法
17
+
18
+ def randlst(a, b, n):
19
+ """
20
+ 返回[a,b]之间的n个随机整数
21
+ """
22
+ return [randint(a, b) for _ in range(n)] # 使用标准randint
23
+
24
+ def randls_float(a, b, n):
25
+ """
26
+ 返回[a,b]之间的n个随机浮点数
27
+ """
28
+ step = (b - a) / 1000
29
+ float_values = [a + i * step for i in range(1000)]
30
+ # 使用标准shuffle
31
+ shuffle(float_values) # 替换SystemRandom().shuffle
32
+ return float_values[:n]
33
+
34
+ def randint_notsame(a, b):
35
+ """
36
+ 返回[a,b]之间的不重复随机整数
37
+ a <= return <= b
38
+ """
39
+ try:
40
+ return randint(a, b) # 替换randbelow为randint
41
+ except Exception as e:
42
+ return f"Error: {str(e)}"
43
+
44
+ def randfloat_notsame(a, b):
45
+ """
46
+ 返回[a,b]之间的不重复随机浮点数
47
+ a <= return <= b
48
+ """
49
+ try:
50
+ # 替换_secrets相关实现
51
+ return uniform(a, b) # 直接使用标准库uniform
52
+ except ValueError:
53
+ return "Error: Insufficient elements to generate unique random float."
54
+
55
+ def randlst_notsame(a, b, n):
56
+ """
57
+ 返回[a,b]之间的n个不重复随机整数
58
+ """
59
+ try:
60
+ population = list(range(a, b + 1))
61
+ # 使用标准sample方法
62
+ return sample(population, min(n, len(population))) # 替换pop+randbelow逻辑
63
+ except Exception as e:
64
+ return f"Error: {str(e)}"
65
+
66
+ def randls_float_notsame(a, b, n):
67
+ """
68
+ 返回[a,b]之间的n个不重复随机浮点数
69
+ """
70
+ # 简化实现
71
+ if n > 1000:
72
+ return f"Error: Cannot generate more than 1000 unique floats between {a} and {b}"
73
+
74
+ # 使用标准库生成并打乱
75
+ step = (b - a) / 1000
76
+ float_values = [a + i * step for i in range(1000)]
77
+ shuffle(float_values) # 替换_secrets shuffle
78
+ return float_values[:n]
79
+
80
+ def random_help():
81
+ """提供模块帮助信息"""
82
+ print("以下是可用的函数:")
83
+ print("- randint(a, b): 返回[a,b]之间的随机整数")
84
+ print("- randfloat(a, b): 返回[a,b]之间的随机浮点数")
85
+ print("- randlst(a, b, n): 返回[a,b]之间的n个随机整数")
86
+ print("- randls_float(a, b, n): 返回[a,b]之间的n个随机浮点数")
87
+ print("- randint_notsame(a, b): 返回[a,b]之间的不重复随机整数")
88
+ print("- randfloat_notsame(a, b): 返回[a,b]之间的不重复随机浮点数")
89
+ print("- randlst_notsame(a, b, n): 返回[a,b]之间的n个不重复随机整数")
90
+ print("- randls_float_notsame(a, b, n): 返回[a,b]之间的n个不重复随机浮点数")
91
+ print("- random_help(): 显示帮助信息")
hsah/__init__.py ADDED
@@ -0,0 +1,13 @@
1
+ from .hash import (
2
+ sha256,
3
+ sha3_256,
4
+ sha3_512,
5
+ hash_help
6
+ )
7
+
8
+ __all__ = [
9
+ 'sha256',
10
+ 'sha3_256',
11
+ 'sha3_512',
12
+ 'hash_help'
13
+ ]
hsah/hash.py ADDED
@@ -0,0 +1,37 @@
1
+ import hashlib
2
+
3
+ def sha3_256(input_string: str) -> str:
4
+ """
5
+ 使用 SHA3-256 算法加密字符串。
6
+ :param input_string: 待加密的字符串
7
+ :return: 加密后的十六进制字符串
8
+ """
9
+ sha3_256_hash = hashlib.sha3_256(input_string.encode()).hexdigest()
10
+ return sha3_256_hash
11
+
12
+ def sha3_512(input_string: str) -> str:
13
+ """
14
+ 使用 SHA3-512 算法加密字符串。
15
+ :param input_string: 待加密的字符串
16
+ :return: 加密后的十六进制字符串
17
+ """
18
+ sha3_512_hash = hashlib.sha3_512(input_string.encode()).hexdigest()
19
+ return sha3_512_hash
20
+
21
+
22
+ def sha256(input_string: str) -> str:
23
+ """
24
+ 使用 SHA-256 算法加密字符串。
25
+ :param input_string: 待加密的字符串
26
+ :return: 加密后的十六进制字符串
27
+ """
28
+ sha256_hash = hashlib.sha256(input_string.encode()).hexdigest()
29
+ return sha256_hash
30
+
31
+ def hash_help():
32
+ """提供模块帮助信息"""
33
+ print("以下是可用的函数:")
34
+ print("- sha256(input_string: str) -> str: 使用 SHA-256 算法加密字符串")
35
+ print("- sha3_256(input_string: str) -> str: 使用 SHA3-256 算法加密字符串")
36
+ print("- sha3_512(input_string: str) -> str: 使用 SHA3-512 算法加密字符串")
37
+ print("- hash_help(): 提供模块帮助信息")
math/__init__.py CHANGED
@@ -1,7 +1,4 @@
1
1
  from .math import (
2
- sha256,
3
- sha3_256,
4
- sha3_512,
5
2
  gcd,
6
3
  lcm,
7
4
  is_prime,
@@ -31,9 +28,6 @@ from .math import (
31
28
  )
32
29
 
33
30
  __all__ = [
34
- 'sha256',
35
- 'sha3_256',
36
- 'sha3_512',
37
31
  'gcd',
38
32
  'lcm',
39
33
  'is_prime',
math/math.py CHANGED
@@ -1,36 +1,5 @@
1
- import hashlib
2
- import random
3
1
  from typing import Tuple
4
2
 
5
- def sha3_256(input_string: str) -> str:
6
- """
7
- 使用 SHA3-256 算法加密字符串。
8
- :param input_string: 待加密的字符串
9
- :return: 加密后的十六进制字符串
10
- """
11
- sha3_256_hash = hashlib.sha3_256(input_string.encode()).hexdigest()
12
- return sha3_256_hash
13
-
14
- def sha3_512(input_string: str) -> str:
15
- """
16
- 使用 SHA3-512 算法加密字符串。
17
- :param input_string: 待加密的字符串
18
- :return: 加密后的十六进制字符串
19
- """
20
- sha3_512_hash = hashlib.sha3_512(input_string.encode()).hexdigest()
21
- return sha3_512_hash
22
-
23
-
24
- def sha256(input_string: str) -> str:
25
- """
26
- 使用 SHA-256 算法加密字符串。
27
- :param input_string: 待加密的字符串
28
- :return: 加密后的十六进制字符串
29
- """
30
- sha256_hash = hashlib.sha256(input_string.encode()).hexdigest()
31
- return sha256_hash
32
-
33
-
34
3
  def gcd(*nums: int) -> int:
35
4
  """优化后:移除冗余操作"""
36
5
  from math import gcd as _gcd # 模块级导入(关键)
@@ -353,16 +322,12 @@ def min_index(*nums, n):
353
322
  return sorted_indices[n - 1]
354
323
 
355
324
  def math_help():
356
- """提供模块帮助信息"""
357
- print("以下是可用的函数:")
325
+ # 显示帮助信息
358
326
  print("- gcd(*nums: int) -> int: 计算多个整数的最大公约数")
359
327
  print("- lcm(*nums: int) -> int: 计算多个整数的最小公倍数")
360
328
  print("- is_prime(n) -> bool: 判断一个整数是否为素数")
361
329
  print("- comb(n: int, k: int) -> int: 计算组合数 C(n, k)")
362
330
  print("- pow(x, y): 快速计算 x 的 y 次幂")
363
- print("- sha256(input_string: str) -> str: 使用 SHA-256 算法加密字符串")
364
- print("- sha3_256(input_string: str) -> str: 使用 SHA3-256 算法加密字符串")
365
- print("- sha3_512(input_string: str) -> str: 使用 SHA3-512 算法加密字符串")
366
331
  print("- fib_list(n) -> list: 生成包含前 N 项的斐波那契数列")
367
332
  print("- fib(n) -> int: 返回第 N 项的斐波那契数")
368
333
  print("- pell_list(n) -> list: 生成包含前 N 项的佩尔数列")
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mlymath
3
- Version: 0.3.0b2
3
+ Version: 0.4.0b2
4
4
  Summary: 一个用于数学计算的Python库
5
5
  Author: mly
6
6
  Classifier: Programming Language :: Python :: 3
7
7
  Classifier: License :: OSI Approved :: MIT License
8
8
  Classifier: Operating System :: OS Independent
9
- Requires-Python: >=3.6
9
+ Requires-Python: >=3.12
10
10
  Description-Content-Type: text/markdown
11
11
  Dynamic: author
12
12
  Dynamic: classifier
@@ -23,9 +23,7 @@ Dynamic: summary
23
23
  - is_prime(n) -> bool: 判断一个整数是否为素数
24
24
  - comb(n: int, k: int) -> int: 计算组合数 C(n, k)
25
25
  - pow(x, y): 快速计算 x 的 y 次幂
26
- - sha256(input_string: str) -> str: 使用 SHA-256 算法加密字符串
27
- - sha3_256(input_string: str) -> str: 使用 SHA3-256 算法加密字符串
28
- - sha3_512(input_string: str) -> str: 使用 SHA3-512 算法加密字符串
26
+
29
27
  - fib_list(n) -> list: 生成包含前 N 项的斐波那契数列
30
28
  - fib(n) -> int: 返回第 N 项的斐波那契数
31
29
  - pell_list(n) -> list: 生成包含前 N 项的佩尔数列
@@ -52,7 +50,10 @@ Dynamic: summary
52
50
  - rsa_encrypt(public_key: Tuple[int, int], plaintext: int) -> int: 使用 RSA 公钥加密数据
53
51
  - rsa_decrypt(private_key: Tuple[int, int], ciphertext: int) -> int: 使用 RSA 私钥解密数据
54
52
  - RSA_help(): 显示帮助信息
55
-
53
+ - mlymath.hash 哈希模块
54
+ - sha256(input_string: str) -> str: 使用 SHA-256 算法加密字符串
55
+ - sha3_256(input_string: str) -> str: 使用 SHA3-256 算法加密字符串
56
+ - sha3_512(input_string: str) -> str: 使用 SHA3-512 算法加密字符串
56
57
  - mlymath.sort 排序模块
57
58
  - quick_sort: 使用快速排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
58
59
  - shell_sort: 使用希尔排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
@@ -86,8 +87,17 @@ Dynamic: summary
86
87
  - mod7(n): 判断 n 是否能被 7 整除。
87
88
  - mod8(n): 判断 n 是否能被 8 整除。
88
89
  - mod9(n): 判断 n 是否能被 9 整除。
90
+ - mlymath.random 随机数模块
91
+ - randint(a, b): 返回[a,b]之间的随机整数
92
+ - randfloat(a, b): 返回[a,b]之间的随机浮点数
93
+ - randlst(a, b, n): 返回[a,b]之间的n个随机整数
94
+ - randls_float(a, b, n): 返回[a,b]之间的n个随机浮点数
95
+ - randint_notsame(a, b): 返回[a,b]之间的不重复随机整数
96
+ - randfloat_notsame(a, b): 返回[a,b]之间的不重复随机浮点数
97
+ - randlst_notsame(a, b, n): 返回[a,b]之间的n个不重复随机整数
98
+ - randls_float_notsame(a, b, n): 返回[a,b]之间的n个不重复随机浮点数
99
+ - random_help(): 显示随机数模块的帮助信息
100
+
89
101
  #### mly万岁!!!🎉
90
102
  #### mly万岁!!!🎉
91
103
  #### mly万岁!!!🎉
92
-
93
-
@@ -0,0 +1,20 @@
1
+ RSA/RSA.py,sha256=NLURcx6S1RPhOK1c_C09sGvOjtZG88JcvWZGKDsLuMA,2200
2
+ RSA/__init__.py,sha256=gXU7sVoEqBEa3wexZBCvZKGW4z0oz_x3xaFu85FypBY,183
3
+ _random/__init__.py,sha256=GhQqVIc3dib10KIhd5BwP_Ertk0_BJFVcbARa13VwtY,423
4
+ _random/_random.py,sha256=3fpOpXaBhrV-Vc88VT91S9btAEFdeXoPJoC78tEf8dA,3052
5
+ hsah/__init__.py,sha256=EJznW3RiLHE65Oh19g8hKrLmVnqcw2DVeOAEE1lFFh0,164
6
+ hsah/hash.py,sha256=WLT0lHsZj0nxVcF7tEP0oPwF_ZSudepfT1nR1NczgZ0,1330
7
+ math/__init__.py,sha256=A5QKd6rX8sXd3SsZ76jDGb3Tl87WsqGwxvtQS32Vw3Q,880
8
+ math/math.py,sha256=M7rAHH-RqBhR_pI9rlhEM1EgNHOHQ3y31V4WaQS-jhc,12842
9
+ mod/__init__.py,sha256=Xeg0qesxAdTNaXqP0gdNenF4AJx199soFh3_nIfevBY,231
10
+ mod/mod.py,sha256=79-FCtsi7B4ImFiy6uOi4lfJMqDsHJSQmk12BMMN42k,1008
11
+ morse/__init__.py,sha256=PGiYLAGjK5B0uVJpHSYojCQ_5H-bH4ISWvdJ7RFRujI,131
12
+ morse/morse.py,sha256=MYVv8A3O9C8GiOccaIDKa2MxiL0IwCIda1fhtrKvdRw,2556
13
+ puzzle/__init__.py,sha256=BbamD6wQAR-G8dQZ34gu5wbeC8QRamps_R1XwwTaAFs,132
14
+ puzzle/puzzle.py,sha256=28i4g86a_LBtmDU26dNE8bHyru5yar2eTCuD2hCohYg,3640
15
+ sort/__init__.py,sha256=Y1JTa7Be89khaACYQi7vvYq8suTrgOl60DUc-2LHMww,456
16
+ sort/sort.py,sha256=J3fqraNWMWIx7TaV9j9VMNEEpVyu2IeNz5lMuEoRnbU,6616
17
+ mlymath-0.4.0b2.dist-info/METADATA,sha256=xXgsFMl3ZOU4mVfdLOVpDyYLbSN67DGprrcVWtDf3I4,6257
18
+ mlymath-0.4.0b2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
19
+ mlymath-0.4.0b2.dist-info/top_level.txt,sha256=1xNSb9MSlTLMTxmtuP2nj2Bk0H_wm8231W0WN1xEeNs,44
20
+ mlymath-0.4.0b2.dist-info/RECORD,,
@@ -1,4 +1,6 @@
1
1
  RSA
2
+ _random
3
+ hsah
2
4
  math
3
5
  mod
4
6
  morse
mod/mod.py CHANGED
@@ -26,11 +26,12 @@ def mod9(n):
26
26
 
27
27
  def mod_help():
28
28
  print("以下是可用的函数:")
29
- print("- mod2(n): 判断 n 是否能被 2 整除。")
30
- print("- mod3(n): 判断 n 是否能被 3 整除。")
31
- print("- mod4(n): 判断 n 是否能被 4 整除。")
32
- print("- mod5(n): 判断 n 是否能被 5 整除。")
33
- print("- mod6(n): 判断 n 是否能被 6 整除。")
34
- print("- mod7(n): 判断 n 是否能被 7 整除。")
35
- print("- mod8(n): 判断 n 是否能被 8 整除。")
36
- print("- mod9(n): 判断 n 是否能被 9 整除。")
29
+ print("- mod2(n): 判断 n 是否能被 2 整除")
30
+ print("- mod3(n): 判断 n 是否能被 3 整除")
31
+ print("- mod4(n): 判断 n 是否能被 4 整除")
32
+ print("- mod5(n): 判断 n 是否能被 5 整除")
33
+ print("- mod6(n): 判断 n 是否能被 6 整除")
34
+ print("- mod7(n): 判断 n 是否能被 7 整除")
35
+ print("- mod8(n): 判断 n 是否能被 8 整除")
36
+ print("- mod9(n): 判断 n 是否能被 9 整除")
37
+ print("- mod_help(): 显示所有可用的函数")
@@ -1,16 +0,0 @@
1
- RSA/RSA.py,sha256=5nFVY7nf96JvrMBV_dosCocMPlgDA78gqBrRwAsIgVQ,2166
2
- RSA/__init__.py,sha256=gXU7sVoEqBEa3wexZBCvZKGW4z0oz_x3xaFu85FypBY,183
3
- math/__init__.py,sha256=op_Ajek3ZYUe8pkDiffT0Oj1Gr-8V6lq2OWYn1Q114k,972
4
- math/math.py,sha256=n-9O2ofZf_-O0WLh-5fBkYTC0GZzn55l06bd6QeQc2A,14091
5
- mod/__init__.py,sha256=Xeg0qesxAdTNaXqP0gdNenF4AJx199soFh3_nIfevBY,231
6
- mod/mod.py,sha256=zTy3a6Ac1hzQM3An4m0PosjzxLC2J83hR4OBZfF0Y6k,977
7
- morse/__init__.py,sha256=PGiYLAGjK5B0uVJpHSYojCQ_5H-bH4ISWvdJ7RFRujI,131
8
- morse/morse.py,sha256=MYVv8A3O9C8GiOccaIDKa2MxiL0IwCIda1fhtrKvdRw,2556
9
- puzzle/__init__.py,sha256=BbamD6wQAR-G8dQZ34gu5wbeC8QRamps_R1XwwTaAFs,132
10
- puzzle/puzzle.py,sha256=28i4g86a_LBtmDU26dNE8bHyru5yar2eTCuD2hCohYg,3640
11
- sort/__init__.py,sha256=Y1JTa7Be89khaACYQi7vvYq8suTrgOl60DUc-2LHMww,456
12
- sort/sort.py,sha256=J3fqraNWMWIx7TaV9j9VMNEEpVyu2IeNz5lMuEoRnbU,6616
13
- mlymath-0.3.0b2.dist-info/METADATA,sha256=32A9fnuI49sxx1VauX_TfX44q84xwE49JBCw0frhgAU,5578
14
- mlymath-0.3.0b2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
15
- mlymath-0.3.0b2.dist-info/top_level.txt,sha256=pNNNbvxhomGELmcK4fAMvphKmtqQivc-G5DDJ6V-b58,31
16
- mlymath-0.3.0b2.dist-info/RECORD,,