sage之数论

R = IntegerModRing(97)

#分数模运算a=2/3 mod 97
a = R(2) / R(3)

#还原a的分数形式
a.rational_reconstruction()
b = R(47)

#计算b的幂次,返回的是50
b^20052005

#检测b是否是模97的平方剩余,b=12^2 mod 97,故b是模97的平方剩余
b.is_square()

#计算原根
gp ('znprimroot('+str(7)+')')
#或者
pari ('znprimroot('+str(7)+')')
#计算公约数
gcd(515,2005)

#因子分解
factor(2005)

#因子分解之椭圆曲线分解
ecm(2005)

#因子分解之二次筛法分解
qsieve(2005)

#计算阶乘
c = factorial(25)
[valuation(c,p) for p in prime_range(2,23)]

对这一行命令:首先,prime_range(2,23)就是2(包括)至23(不包括)之间的素数列表,即[2, 3, 5, 7, 11, 13, 17, 19],那么valuation(c,p)又是什么意思呢?我用几个例子测试之后才明白:若p不整除c,则valuation(c,p)=0;若p整除c,则valuation(c,p)为c的唯一分解式中p的指数。举个例子,valuation(120,5)=1,因为120的唯一分解为2^3 * 3 * 5,可以看到唯一分解式中5的指数为1,于是valuation(120,5)=1。

#大于2005的下一个素数
next_prime(2005)

#小于2005的前一个素数
previous_prime(2005)

#前20个素数
primes_first_n(20)

#第20个素数
nth_prime(20)

#a与b之间的素数(左闭右开)
primes(a,b)

#产生0-2005之间的随机数
e = ZZ.random_element(2005)

#m,e,n均为大数,计算m^e mod n
c = power_mod(m, e, n); c

#28的因子
divisors(28)

#sigma(n,k)函数:sum_{d|n}d^k,即n的所有正因子的k次方之和
sigma(28,0); sigma(28,1); sigma(28,2)

#扩展的欧几里得算法,d为12与15的公约数且d=u*12+v*15
d,u,v = xgcd(12,15)

#3在模n下的逆
inverse_mod(3,n)

#素因子
prime_divisors(n)

#欧拉函数,自己计算
phi = n*prod([1 - 1/p for p in prime_divisors(n)]); phi
#或者用已写好的函数
euler_phi(n)

#可以当做计算n/5
prime_to_m_part(n, 5)

#若n为奇数,odd_part(n)就是n;若n为偶数,则n可被分解为n=2^k * p,p为奇数,则odd_part(n)为p
odd_part(n)

#中国剩余定理,crt是Chinese remainder theorem的缩写;
#下面求解的是方程:x=2 mod 3,x=1 mod 5
x = crt(2, 1, 3, 5); x

#计算二项式
[binomial(13,m) for m in range(14)]

#计算雅克比(m/13),若m是13的平方剩余,(m/13)=1;否则,(m/13)=-1
[kronecker(m,13) for m in range(1,13)]

#莫比乌斯函数
n = 10000; sum([moebius(m) for m in range(1,n)])

#加法分解
Partitions(4).list()

#x的ASCII码
m = [ord(x) for x in "HELLOWORD"]; m

#对消息编码;reversed(m)是一个反向迭代器,ZZ(list,100)代表一个整数,计算方式为:
#list[0]+list[1]*100+...+list[n-1]*100^(n-1)
m = ZZ(list(reversed(m)), 100) ; m

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值