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

总结

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

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

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

相关推荐
LOVE️YOU1 小时前
Python 中 Tuple 为什么有时可 Hash,有时不可 Hash?
开发语言·python·哈希算法
李永奉1 小时前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆1 小时前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦2 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up2 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室2 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
杨丰玮4182 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码3 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
XiaoMaqqqq3 小时前
知名的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
言乐63 小时前
Python实现语音审核模型
开发语言·python·django·virtualenv·pygame