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

总结

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

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

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

相关推荐
chase_my_dream2 分钟前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
KaMeidebaby23 分钟前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy61825 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫1 小时前
15天Python入门系列 · 序
开发语言·python
happylifetree1 小时前
Python017-第二章15.数据容器-dict常用操作
python
装不满的克莱因瓶1 小时前
了解 LangChain 中的 LLM 与 ChatModel 的差异
人工智能·python·ai·langchain·llm·agent·chatmodel
手写码匠1 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力2 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试
lqqjuly2 小时前
MLA — 多头潜在注意力深度解析
深度学习·神经网络·算法
宋拾壹2 小时前
同时添加多个类目
android·开发语言·javascript