Python科学计算系列10—数论

    技术2022-07-10  106

    1.常用操作

    代码如下:

    # coding=utf-8 from sympy import * from sympy.ntheory.modular import solve_congruence, crt # 阶乘 # 例:求5的阶乘 print(factorial(5)) # 分解质因数 # 例:将300分解质因数 print(factorint(300, visual=True)) # 欧拉函数 # 例:求Ψ(25)的值 print(totient(25)) # 判断是否质数 # 例:求2^17-1是否为质数 print(isprime(2 ** 17 - 1)) # 莫比乌斯函数 print(mobius(13 * 17 * 5)) # 求因子 print(divisors(36)) # 解同余方程 # 例:今有一数,除3余2,除5余3,除7余2,问该数几何? # 第一个数为余数,第二个数为模数 # 方法1 print(solve_congruence((2, 3), (3, 5), (2, 7))) # 方法2 # 前三个数为模数,后三个为余数 print(crt([3, 5, 7], [2, 3, 2])) # 求离散对数(7^3mod15=41) print(discrete_log(41, 15, 7))

    运行结果:

    2.求可以尺规作图的正n边形(n<100)

    代码如下:

    a = [] for i in range(1, 101): if isprime(2 ** i - 1): a.append(i) print(a)

    运行结果:

    [2, 3, 5, 7, 13, 17, 19, 31, 61, 89]

    3.函数简介

    欧拉函数φ(n)

    定义:φ(n)表示不超过n且与n互素的正整数的个数

    计算公式

    例:φ(25)=25(1-1/5)=20

    莫比乌斯函数μ(n)

    定义如下:

    例:μ(5*11*13)=(-1)^3=-1

    Processed: 0.008, SQL: 9