2022.12.17 闲话

基本内容

整数三元组 (a,b,c) 是勾股数当且仅当 a2+b2=c2 .

本原勾股数

若勾股数 (a,b,c) 满足 ab,则称其为一组本原勾股数,此时显然有 a,b,c 两两互素 .

因为奇数的平方一定模 4 余 1,偶数的平方一定模 4 余 0,于是对于勾股数 (a,b,c)a,b 中至少有一个偶数 .

本原勾股数定理

所有满足 2y 的本原勾股数 (x,y,z) 可以被整数 (a,b) 表出,其中 a>b>0aba,b 奇偶性不同 .

表示方式:

x=a2b2y=2abz=a2+b2

证明非常简单就不说了 .


Problem 1

给一个正整数 n,表出正整数 m 的数量,使得能 (n,m) 通过本原勾股数定理构造出一组勾股数 .

正整数 m 的数量记做 δP(n) .

显然可得

δP(n)=i=1n1[in][2ni]

分奇偶性讨论可以得到

δP(n)=11+[2n]φ(n)

勾股数和本原勾股数计数

Problem 2

给一个正整数 n,求斜边长不大于 n 的勾股数和本原勾股数个数 .

考虑一个暴力:

1n 枚举整数 a,然后从 ana2 枚举 b,既可求出答案 .

这个算法的时间复杂度一定不大于满足条件的勾股数数量,这样的勾股数其实不是很多,假设斜边根号的余数是均匀的,可以认为勾股数个数和 n 是同量级的,所以复杂度并不是很高 .

高斯整数

二次整数

二次整数环就是 Z[d],其中 d 是整数 .

或者说二次整数就是首一整系数二次多项式的根 .

二次整数性质其实不咋好……目前的一些结果:

d / 性质 Eucild 整环 主理想整环 唯一分解整环
1,2,3,7,11 1,2,3,7,11,19,43,67,163 1,2,3,7,11,19,43,67,163
2,3,5,6,7,11,13,17,19,21,29,33,37,41,57,73 open open

唯一分解整环后面就叫 UFD 了 .

高斯整数就是 d=1 情况 .

二平方数拆分

推流 joke3579 的高斯整数社论:link .

高斯整数环也就是 Z[i]查表可得它是 UFD .

整环上存在逆元的元素称为单位,可以得到 Z[i] 上的单位只有四个:1,1,i,i .

高斯素数的形式:

  • 1+i .
  • 4k+1 型素数:拆成两个共轭高斯素数(4k+1 型素数必然可以表成两数平方和).
  • 4k+3 型素数:还是素数 .

R(n) 为将 n 分成两平方数之和的方案数 .

Lemma

令整数 n 的素因数分解形式为:

n=2ti=1rpieii=1sqifi

其中 pi 是模 41 的素数,qi 是模 43 的素数 .

R(n)={4i=1r(ei+1)i,2fi0otherwise.

注意到一个方案 n=a2+b2 就是 n=(a+bi)(abi) .

观察可得素因数分解形式可写为

n=(i)t(1+i)2ti=1r(ai+bii)ei(aibii)eii=1sqifi

如果 fi 有奇数的就匹配不上了答案显然是 0,以下考虑 fi 都是偶数的情况 .

只需要考虑 {p}a+biabi 的贡献,于是就产生

i=1r(ei+1)

的贡献 .

因为有 4 个单位的方向,所以答案再乘 4 即可,证毕 .

勒让德两平方数之和定理

R(n)=4(d>0([4d+1n][4d+3n]))

令整数 n 的素因数分解形式为:

n=2ti=1rpieii=1sqifi

则根据 Lemma,只需验证

4(d>0([4d+1n][4d+3n]))={4i=1r(ei+1)i,2fi0otherwise.

dk=i>0[4i+kn] .

考虑对 s 归纳(考虑 4k+3 型素因子的一个前缀),则:

  • s=0 时,显然成立 .
  • s>0 时,对于每个 (qi,fi) 分别讨论:
    • 2fi,显然 d1=d3,命题成立 .
    • 2fi,奇偶次幂的因子被均分在 d1,d3 中,于是相当于变成了大小为 nqifi 的子问题,根据归纳假设,命题成立 .

高斯整数的一些应用:

Problem 3

给一个正整数 r,问圆心为 (0,0),半径为 r 的圆上有多少个整点 .

问题即为找整数二元组 (x,y) 的数量,使得 x2+y2=r2 .

根据勒让德两平方数之和定理,将 r2 分解质因数即可 .

Problem 4

给一个正整数 n,求斜边长不大于 n 的所有勾股数 .

在勒让德两平方数之和定理的过程中即可输出所有勾股数,对于勾股数 (a,b,c),枚举 c,施 pollard-rho 即可做到 Θ(n5/4) .

用 Problem 2 的手法可以 O(n) 左右 .

如果是计数也一样 .

Z[i] 上的 GCD 和因数分解

查表可得 Z[i] 是 Euclid 整环 .

于是 Z[i] 的 GCD 可以通过辗转相除法求出 .


因数分解也比较平凡,因为范数是积性的,所以用某些方法先分解欲分解的高斯整数的范数,可以得到答案素因子的范数的几个可能值 .

知道范数求原数用高斯素数的形式即可 Θ(1),接下来试除即可 .

淡化比较浓的东西

代数曲线上的有理点

所有勾股数都可以对应到单位圆上的有理点上 .

即若 (ab)2+(bc)2=1a,b,c 是正整数时,有 a2+b2=c2 .

考虑过点 (1,0) 引一条斜率为有理数 t 的直线,交圆心为原点的单位圆于点 (x,y),则可以得到如下图所示的结果:

可以发现直线与单位圆交于另一有理点,由此可以知道可以用 t 来参数化单位圆上的所有有理点 .

根据已知信息可以得到

t=yx+1x2+y2=1

代入可知

(x+1)((x1)+t2(x+1))=0

x=1 是平凡解((x,y) 为点 (1,0)),于是下面令 x1,则

(x1)+t2(x+1)=0

解得 x=1t21+t2,从而可以得到 y=2t1+t2 .

于是直线 y=t(x+1) 与单位圆的第二个交点为 (1t21+t2,2t1+t2),它是关于 t 的有理函数,所以它是有理点的当且仅当 t 是有理数 .

于是我们就得到单位圆上的所有有理点,即 (1,0) 和所有形如 (1t21+t2,2t1+t2) 的点 . 令 t=mn,其中 m,n 是正整数,则可以得到一个关于所有勾股数的表达式 .

代入 t=mn 可得有理点 (m2n2m2+n2,2mnm2+n2),则根据前面的讨论可得 (m2n2,2mn,m2+n2) 为一组勾股数 .

这给出了一个对代数曲线有理参数化的一个方法 . 一个例子:椭圆 x2+xy+y2=1 上的所有有理点为 (1,1) 和所有形如 (1t2t2+t+1,t2+2tt2+t+1) 的点,其中 t 是有理数 .

二平方和

根据先前的讨论,知道一个正整数可表示为两个正整数的平方和,当且仅当其所有形如 4k+3 形式的素因子在 n 中的次幂均为偶数 .

这一部分懒得写了,nmd

posted @   yspm  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
😅​
点击右上角即可分享
微信分享提示