mlymath 0.1.0__tar.gz → 0.1.2__tar.gz
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.
- {mlymath-0.1.0 → mlymath-0.1.2}/PKG-INFO +1 -1
- mlymath-0.1.2/README.md +53 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/math/__init__.py +6 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/math/math.py +68 -2
- {mlymath-0.1.0 → mlymath-0.1.2}/mlymath.egg-info/PKG-INFO +1 -1
- {mlymath-0.1.0 → mlymath-0.1.2}/mlymath.egg-info/SOURCES.txt +1 -0
- mlymath-0.1.2/setup.cfg +7 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/setup.py +1 -1
- mlymath-0.1.0/README.md +0 -0
- mlymath-0.1.0/setup.cfg +0 -4
- {mlymath-0.1.0 → mlymath-0.1.2}/mlymath.egg-info/dependency_links.txt +0 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/mlymath.egg-info/top_level.txt +0 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/morse/__init__.py +0 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/morse/morse.py +0 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/sort/__init__.py +0 -0
- {mlymath-0.1.0 → mlymath-0.1.2}/sort/sort.py +0 -0
mlymath-0.1.2/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#### 由mly创建的与数学有关的工具库
|
2
|
+
##### 附属模块:
|
3
|
+
- mlymath.math 数学模块
|
4
|
+
- gcd(*nums: int) -> int: 计算多个整数的最大公约数
|
5
|
+
- lcm(*nums: int) -> int: 计算多个整数的最小公倍数
|
6
|
+
- is_prime(n) -> bool: 判断一个整数是否为素数
|
7
|
+
- comb(n: int, k: int) -> int: 计算组合数 C(n, k)
|
8
|
+
- pow(x, y): 快速计算 x 的 y 次幂
|
9
|
+
- sha256(input_string: str) -> str: 使用 SHA-256 算法加密字符串
|
10
|
+
- sha3_256(input_string: str) -> str: 使用 SHA3-256 算法加密字符串
|
11
|
+
- sha3_512(input_string: str) -> str: 使用 SHA3-512 算法加密字符串
|
12
|
+
- fib_list(n) -> list: 生成包含前 N 项的斐波那契数列
|
13
|
+
- fib(n) -> int: 返回第 N 项的斐波那契数
|
14
|
+
- pell_list(n) -> list: 生成包含前 N 项的佩尔数列
|
15
|
+
- pell(n) -> int: 返回第 N 项的佩尔数
|
16
|
+
- factor(n: int) -> list: 分解整数 n 的质因数
|
17
|
+
- manhattan_d(point1, point2): 计算两个点之间的曼哈顿距离
|
18
|
+
- euclidean_d(point1, point2, precision=None): 计算两个点之间的欧几里得距离,可指定小数位数
|
19
|
+
- matrix_add(matrix1, matrix2): 计算两个矩阵的加法
|
20
|
+
- matrix_sub(matrix1, matrix2): 计算两个矩阵的减法
|
21
|
+
- matrix_mu(matrix1, matrix2): 计算两个矩阵的乘法
|
22
|
+
- matrix_transpose(matrix): 计算矩阵的转置
|
23
|
+
- matrix_scalar_mul(matrix, scalar): 计算矩阵与标量的乘法
|
24
|
+
- list_max(nums, n): 找到数组中第 N 大的数
|
25
|
+
- max(\*nums, n): 找到多个数中第 N 大的数, 输入n时请注意使用n = [num]
|
26
|
+
- list_max_index(nums, n): 找到数组中第 N 大的数的索引
|
27
|
+
- max_index(\*nums, n): 找到多个数中第 N 大的数的索引, 输入n时请注意使用n = [num]
|
28
|
+
- list_min(nums, n): 找到数组中第 N 小的数
|
29
|
+
- min(\*nums, n): 找到多个数中第 N 小的数, 输入n时请注意使用n = [num]
|
30
|
+
- list_min_index(nums, n): 找到数组中第 N 小的数的索引
|
31
|
+
- min_index(\*nums, n): 找到多个数中第 N 小的数的索引, 输入n时请注意使用n = [num]
|
32
|
+
- get_rsa_keys(p: int, q: int) -> Tuple[Tuple[int, int], Tuple[int, int]]: 生成 RSA 公钥和私钥
|
33
|
+
- rsa_encrypt(public_key: Tuple[int, int], plaintext: int) -> int: 使用 RSA 公钥加密数据
|
34
|
+
- rsa_decrypt(private_key: Tuple[int, int], ciphertext: int) -> int: 使用 RSA 私钥解密数据
|
35
|
+
- mlymath.sort 排序模块
|
36
|
+
- quick_sort: 使用快速排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
37
|
+
- shell_sort: 使用希尔排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
38
|
+
- heap_sort: 使用堆排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
39
|
+
- bucket_sort: 使用桶排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
40
|
+
- insertion_sort: 使用插入排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
41
|
+
- bubble_sort: 使用冒泡排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
42
|
+
- merge_sort: 使用归并排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
43
|
+
- selection_sort: 使用选择排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
44
|
+
- counting_sort: 使用计数排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
45
|
+
- radix_sort: 使用基数排序算法对数组进行排序。可通过 reverse 参数控制排序顺序(默认正序)
|
46
|
+
- mlymath.morse 摩斯电码模块
|
47
|
+
- morse(input_string): 将字符串转换为摩尔斯电码
|
48
|
+
- unmorse(morse_code): 将摩尔斯电码转换为字符串
|
49
|
+
#### mly万岁!!!🎉
|
50
|
+
#### mly万岁!!!🎉
|
51
|
+
#### mly万岁!!!🎉
|
52
|
+
|
53
|
+
|
@@ -27,6 +27,9 @@ from .math import (
|
|
27
27
|
max_index,
|
28
28
|
list_min_index,
|
29
29
|
min_index,
|
30
|
+
get_rsa_key,
|
31
|
+
rsa_encrypt,
|
32
|
+
rsa_decrypt,
|
30
33
|
math_help
|
31
34
|
)
|
32
35
|
|
@@ -59,5 +62,8 @@ __all__ = [
|
|
59
62
|
'max_index',
|
60
63
|
'list_min_index',
|
61
64
|
'min_index',
|
65
|
+
'get_rsa_key',
|
66
|
+
'rsa_encrypt',
|
67
|
+
'rsa_decrypt',
|
62
68
|
'math_help'
|
63
69
|
]
|
@@ -1,4 +1,67 @@
|
|
1
|
-
import hashlib
|
1
|
+
import hashlib
|
2
|
+
import random
|
3
|
+
from typing import Tuple
|
4
|
+
|
5
|
+
def get_rsa_key(p: int, q: int) -> Tuple[Tuple[int, int], Tuple[int, int]]:
|
6
|
+
"""
|
7
|
+
生成 RSA 公钥和私钥。
|
8
|
+
:param p: 第一个大素数
|
9
|
+
:param q: 第二个大素数
|
10
|
+
:return: 公钥 (e, n) 和私钥 (d, n)
|
11
|
+
"""
|
12
|
+
n = p * q
|
13
|
+
phi = (p - 1) * (q - 1)
|
14
|
+
|
15
|
+
def multiplicative_inverse(e: int, phi: int) -> int:
|
16
|
+
d = 0
|
17
|
+
x1 = 0
|
18
|
+
x2 = 1
|
19
|
+
y1 = 1
|
20
|
+
temp_phi = phi
|
21
|
+
|
22
|
+
while e > 0:
|
23
|
+
temp1 = temp_phi // e
|
24
|
+
temp2 = temp_phi - temp1 * e
|
25
|
+
temp_phi = e
|
26
|
+
e = temp2
|
27
|
+
|
28
|
+
x = x2 - temp1 * x1
|
29
|
+
y = d - temp1 * y1
|
30
|
+
|
31
|
+
x2 = x1
|
32
|
+
x1 = x
|
33
|
+
d = y1
|
34
|
+
y1 = y
|
35
|
+
|
36
|
+
if temp_phi == 1:
|
37
|
+
return d + phi
|
38
|
+
|
39
|
+
e = random.randint(1, phi)
|
40
|
+
while gcd(e, phi) != 1: # 直接调用模块级 gcd 函数
|
41
|
+
e = random.randint(1, phi)
|
42
|
+
|
43
|
+
d = multiplicative_inverse(e, phi)
|
44
|
+
return (e, n), (d, n)
|
45
|
+
|
46
|
+
def rsa_encrypt(public_key: Tuple[int, int], plaintext: int) -> int:
|
47
|
+
"""
|
48
|
+
使用 RSA 公钥加密数据。
|
49
|
+
:param public_key: 公钥 (e, n)
|
50
|
+
:param plaintext: 明文数据
|
51
|
+
:return: 密文数据
|
52
|
+
"""
|
53
|
+
e, n = public_key
|
54
|
+
return pow(plaintext, e, n)
|
55
|
+
|
56
|
+
def rsa_decrypt(private_key: Tuple[int, int], ciphertext: int) -> int:
|
57
|
+
"""
|
58
|
+
使用 RSA 私钥解密数据。
|
59
|
+
:param private_key: 私钥 (d, n)
|
60
|
+
:param ciphertext: 密文数据
|
61
|
+
:return: 明文数据
|
62
|
+
"""
|
63
|
+
d, n = private_key
|
64
|
+
return pow(ciphertext, d, n)
|
2
65
|
|
3
66
|
def sha3_256(input_string: str) -> str:
|
4
67
|
"""
|
@@ -370,7 +433,7 @@ def math_help():
|
|
370
433
|
print("- euclidean_d(point1, point2, precision=None): 计算两个点之间的欧几里得距离,可指定小数位数")
|
371
434
|
print("- matrix_add(matrix1, matrix2): 计算两个矩阵的加法")
|
372
435
|
print("- matrix_sub(matrix1, matrix2): 计算两个矩阵的减法")
|
373
|
-
print("-
|
436
|
+
print("- matrix_mul(matrix1, matrix2): 计算两个矩阵的乘法")
|
374
437
|
print("- matrix_transpose(matrix): 计算矩阵的转置")
|
375
438
|
print("- matrix_scalar_mul(matrix, scalar): 计算矩阵与标量的乘法")
|
376
439
|
print("- list_max(nums, n): 找到数组中第 N 大的数")
|
@@ -381,3 +444,6 @@ def math_help():
|
|
381
444
|
print("- min(*nums, n): 找到多个数中第 N 小的数, 输入n时请注意使用n = [num]")
|
382
445
|
print("- list_min_index(nums, n): 找到数组中第 N 小的数的索引")
|
383
446
|
print("- min_index(*nums, n): 找到多个数中第 N 小的数的索引, 输入n时请注意使用n = [num]")
|
447
|
+
print("- get_rsa_keys(p: int, q: int) -> Tuple[Tuple[int, int], Tuple[int, int]]: 生成 RSA 公钥和私钥")
|
448
|
+
print("- rsa_encrypt(public_key: Tuple[int, int], plaintext: int) -> int: 使用 RSA 公钥加密数据")
|
449
|
+
print("- rsa_decrypt(private_key: Tuple[int, int], ciphertext: int) -> int: 使用 RSA 私钥解密数据")
|
mlymath-0.1.2/setup.cfg
ADDED
mlymath-0.1.0/README.md
DELETED
File without changes
|
mlymath-0.1.0/setup.cfg
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|