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