python 经典数学算法

以下是使用Python实现几个经典数学算法的示例:


1. 欧几里得算法(最大公约数)

欧几里得算法用于计算两个数的最大公约数(GCD)。

python 复制代码
def gcd(a, b):
    while b:
        a, b = b, a % b
    return a

# 示例
a = 56
b = 98
print(gcd(a, b))  # 输出: 14

2. 素数检测(Sieve of Eratosthenes)

埃拉托斯特尼筛法用于高效地生成一定范围内的所有素数。

python 复制代码
def sieve_of_eratosthenes(n):
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False  # 0 和 1 不是素数

    for p in range(2, int(n**0.5) + 1):
        if is_prime[p]:
            for multiple in range(p * p, n + 1, p):
                is_prime[multiple] = False

    primes = [p for p in range(n + 1) if is_prime[p]]
    return primes

# 示例
n = 50
print(sieve_of_eratosthenes(n))
# 输出: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

3. 快速幂算法(Exponentiation by Squaring)

快速幂算法用于高效地计算大指数的幂运算。

python 复制代码
def fast_pow(base, exponent):
    result = 1
    while exponent > 0:
        if exponent % 2 == 1:
            result *= base
        base *= base
        exponent //= 2
    return result

# 示例
base = 2
exponent = 10
print(fast_pow(base, exponent))  # 输出: 1024

4. 斐波那契数列(Fibonacci Sequence)

斐波那契数列可以通过递归、动态规划或矩阵快速幂实现。以下是动态规划的实现。

python 复制代码
def fibonacci(n):
    if n <= 1:
        return n
    dp = [0] * (n + 1)
    dp[1] = 1
    for i in range(2, n + 1):
        dp[i] = dp[i - 1] + dp[i - 2]
    return dp[n]

# 示例
n = 10
print(fibonacci(n))  # 输出: 55

5. 牛顿迭代法(求平方根)

牛顿迭代法用于高效地计算一个数的平方根。

python 复制代码
def sqrt_newton(n, tolerance=1e-10):
    x = n
    while True:
        root = 0.5 * (x + n / x)
        if abs(root - x) < tolerance:
            return root
        x = root

# 示例
n = 25
print(sqrt_newton(n))  # 输出: 5.0

总结

这些数学算法是解决许多经典数学问题的基础工具:

  • 欧几里得算法:用于计算最大公约数。
  • 埃拉托斯特尼筛法:用于生成素数。
  • 快速幂算法:用于高效计算大指数幂。
  • 斐波那契数列:通过动态规划避免重复计算。
  • 牛顿迭代法:用于高效求解平方根。

通过掌握这些算法,可以解决许多数学和编程问题。

相关推荐
Lenyiin3 分钟前
第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分
c++·算法·leetcode·周赛·lenyiin
ghostwritten14 分钟前
Conda 安装 Jupyter Notebook
开发语言·ide·python·jupyter·conda
行知SLAM15 分钟前
第0章 机器人及自动驾驶SLAM定位方法全解析及入门进阶学习建议
人工智能·算法·机器人·自动驾驶
qq_2739002335 分钟前
torch.reciprocal介绍
人工智能·pytorch·python·深度学习
云边的快乐猫38 分钟前
官网自动化测试工具安装(node.js、Appium、Android SDK、手机模拟器、APPium-python-Client)
自动化测试·python·appium·移动端测试·手机模拟器
hakesashou44 分钟前
Python中对象序列化以及反序列化的方法
linux·开发语言·python
pencil_pen_lv1 小时前
后端Java开发:第十天
开发语言·python
徒步僧1 小时前
Docker安装Prometheus和Grafana
java·开发语言
m0_749317521 小时前
springboot优先级和ThreadLocal
java·开发语言·spring boot·后端·学习·spring
weixin_307779131 小时前
Kafka和Jenkins实现EMR上PySpark和EC2上Airflow的CI/CD
数据仓库·python·ci/cd·kafka·云计算