当前课程知识点:数据结构(下) > 第九章 词典 > (d2)散列:排解冲突(2) > 09D2-7 双平方定理
以上 针对双向平方试探法 我们所给的建议是
将表长M取做形如4k+3的素数
为了证明这个歌建议的有效性和必要性
我们需要用到所谓的双平方定理
整个精妙的定理 出自著名的费马之手
在这个定理中 费马指出 任何一个素数p
若能表示为一对整数的平方和 其充要条件是
这个素数关于4的模余应该是1 而不是3
当然 相关的结论 也可以推广到一般的整数
为此我们需要借助这个恒等式
通过一些基本的代数变换 不难证明这一点
当然你不妨先通过这个实例 做一验证
这个恒等式告诉我们什么呢
它告诉我们 如果有两个自然数
分别可以表示为一对自然数的平方和
那么它们的乘积 也可以表示为一对自然数的平方和
由以上恒等式不难推知 任何一个自然数n
若能分解为一对整数的平方和
当且仅当在它的素因数分解式中
每一个模4余3的素因子 本身都是偶数次方
我们来看一个实例 比如考察810
与所有的自然数一样 它也有一个唯一的素因数分解式
其中只有3是模4余3的 而且它是4次方
符合偶数的要求
我们现在就来看看 如何借助下面恒等式
将他表示为一对整数的平方和
首先那个令人讨厌的2 同样可以分解为1和1的平方和
而3的4次方呢 本身就是9的平方
而5呢 根据费马定理 它必然可以分解
具体的可以分解为1的平方加上2的平方
这样我们就向前迈了一步
接下来考察这个乘积 由我们的恒等式
可以进一步的得到1的平方加上1的平方
再乘以9的平方以及18的平方
现在只需套用刚才的恒等式 就可进一步的得到
9+18 也就是27的平方
再加上9与18的差 也就是9的平方
没错 810 确实可以分解为这样的平方和形式
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试