2022.12.17 闲话
基本内容
整数三元组 是勾股数当且仅当 .
本原勾股数
若勾股数 满足 ,则称其为一组本原勾股数,此时显然有 两两互素 .
因为奇数的平方一定模 4 余 1,偶数的平方一定模 4 余 0,于是对于勾股数 , 中至少有一个偶数 .
本原勾股数定理
所有满足 的本原勾股数 可以被整数 表出,其中 , 且 奇偶性不同 .
表示方式:
证明非常简单就不说了 .
Problem 1
给一个正整数 ,表出正整数 的数量,使得能 通过本原勾股数定理构造出一组勾股数 .
正整数 的数量记做 .
显然可得
分奇偶性讨论可以得到
勾股数和本原勾股数计数
Problem 2
给一个正整数 ,求斜边长不大于 的勾股数和本原勾股数个数 .
考虑一个暴力:
从 枚举整数 ,然后从 枚举 ,既可求出答案 .
这个算法的时间复杂度一定不大于满足条件的勾股数数量,这样的勾股数其实不是很多,假设斜边根号的余数是均匀的,可以认为勾股数个数和 是同量级的,所以复杂度并不是很高 .
高斯整数
二次整数
二次整数环就是 ,其中 是整数 .
或者说二次整数就是首一整系数二次多项式的根 .
二次整数性质其实不咋好……目前的一些结果:
/ 性质 | Eucild 整环 | 主理想整环 | 唯一分解整环 |
---|---|---|---|
虚 | |||
实 | open | open |
唯一分解整环后面就叫 UFD 了 .
高斯整数就是 情况 .
二平方数拆分
推流 joke3579 的高斯整数社论:link .
高斯整数环也就是 ,查表可得它是 UFD .
整环上存在逆元的元素称为单位,可以得到 上的单位只有四个: .
高斯素数的形式:
- .
- 型素数:拆成两个共轭高斯素数( 型素数必然可以表成两数平方和).
- 型素数:还是素数 .
令 为将 分成两平方数之和的方案数 .
Lemma
令整数 的素因数分解形式为:
其中 是模 余 的素数, 是模 余 的素数 .
则
注意到一个方案 就是 .
观察可得素因数分解形式可写为
如果 有奇数的就匹配不上了答案显然是 ,以下考虑 都是偶数的情况 .
只需要考虑 对 和 的贡献,于是就产生
的贡献 .
因为有 个单位的方向,所以答案再乘 即可,证毕 .
勒让德两平方数之和定理
令整数 的素因数分解形式为:
则根据 Lemma,只需验证
令 .
考虑对 归纳(考虑 型素因子的一个前缀),则:
- 时,显然成立 .
- 时,对于每个 分别讨论:
- 若 ,显然 ,命题成立 .
- 若 ,奇偶次幂的因子被均分在 中,于是相当于变成了大小为 的子问题,根据归纳假设,命题成立 .
高斯整数的一些应用:
Problem 3
给一个正整数 ,问圆心为 ,半径为 的圆上有多少个整点 .
问题即为找整数二元组 的数量,使得 .
根据勒让德两平方数之和定理,将 分解质因数即可 .
Problem 4
给一个正整数 ,求斜边长不大于 的所有勾股数 .
在勒让德两平方数之和定理的过程中即可输出所有勾股数,对于勾股数 ,枚举 ,施 pollard-rho 即可做到 .
用 Problem 2 的手法可以 左右 .
如果是计数也一样 .
上的 GCD 和因数分解
查表可得 是 Euclid 整环 .
于是 的 GCD 可以通过辗转相除法求出 .
因数分解也比较平凡,因为范数是积性的,所以用某些方法先分解欲分解的高斯整数的范数,可以得到答案素因子的范数的几个可能值 .
知道范数求原数用高斯素数的形式即可 ,接下来试除即可 .
淡化比较浓的东西
代数曲线上的有理点
所有勾股数都可以对应到单位圆上的有理点上 .
即若 且 是正整数时,有 .
考虑过点 引一条斜率为有理数 的直线,交圆心为原点的单位圆于点 ,则可以得到如下图所示的结果:
可以发现直线与单位圆交于另一有理点,由此可以知道可以用 来参数化单位圆上的所有有理点 .
根据已知信息可以得到
代入可知
是平凡解( 为点 ),于是下面令 ,则
解得 ,从而可以得到 .
于是直线 与单位圆的第二个交点为 ,它是关于 的有理函数,所以它是有理点的当且仅当 是有理数 .
于是我们就得到单位圆上的所有有理点,即 和所有形如 的点 . 令 ,其中 是正整数,则可以得到一个关于所有勾股数的表达式 .
代入 可得有理点 ,则根据前面的讨论可得 为一组勾股数 .
这给出了一个对代数曲线有理参数化的一个方法 . 一个例子:椭圆 上的所有有理点为 和所有形如 的点,其中 是有理数 .
二平方和
根据先前的讨论,知道一个正整数可表示为两个正整数的平方和,当且仅当其所有形如 形式的素因子在 中的次幂均为偶数 .
这一部分懒得写了,nmd
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16988998.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通