本文逻辑有偏差,毕竟当时太年轻
原文写自(2016-03-06 20:06)
——————————————————————————
昨天在给组织同学们上课讲simhash算法的时候考虑了如下问题:
如何判断如下两个自然数构成的集合
S1={e1,e2....,en} 和 S2={b1,b2,...,bn} 相同
其中提到假设构造hash函数
Fe=∏ni=1f(ei)
和
Fb=∏ni=1f(bi)
后是否能通过
Fe
和
Fb
是否相同来判定两个集合相同的问题的时候。文杰同学说只要映射到素数就可以了,这个想法看似是可以的。如今仔细一想,有点问题,假设
ei
和
bi
的取值是有限个自然数,那么没有问题,因为素数有无穷多个,但是假设取值是无穷多个呢(即整个自然数集N)?是否存在这样的映射
f
呢?更进一步是否存在自然数集
经过了2+小时的思考似乎解决了这个问题,当然只是构造了自然数集
引理1:设
引理1证明:
充分性:由已考虑带余除法
u=pk+t,v=qk+t,p,q,t∈N,0≤t≤k.
那么
au≡a(pk+t)≡apk⋅at≡at(modm)
,同理,
av≡at(modm)
,故充分性得证。
必要性:设
l=u−v
,考虑带余除法
l=kq+r,0≤r<k.
由于
au≡av(modm)
且
(a,m)=1
所以有
al≡1(modm)
.故
akq⋅ar≡1(modm)
,于是
ar≡1(modm)
,又由于
0≤r<k.
,所以
r=0
.
综上引理1得证。
引理2:设
p
为奇素数,若
引理2证明:设
q
为
引理3:(费马小定理)若
q
为素数,那么有
或者如下更强形式
(欧拉定理)若
(a,n)=1
,那么
aϕ(n)≡1(modn)
,具体可以参见《近世代数.张禾瑞.P97》
回到原问题,考虑梅森素数的形式,
p
为素数,
如此构造便有单调素数列 {ai} .故完成自然数集N到素数集P的一个单射的构造。
——————————————————————
那么反过来呢?素数和自然数之间是否存在一一映射,实际上,这是非常大的问题,假设这个一一映射被构造出来,那么相当于得到了精确的素数公式,天啊,这是了不起的成就,当然我本人是相信这样的素数公式是不存在的,否则密码界计算机界有大麻烦。关于素数公式或者黎曼猜想的知识大家可以参见《素数之恋》。
补充两种构造:(思路泉涌系列)
二、利用伯特兰-切比雪夫定理:设
n
为大于1的自然数,那么
http://baike.baidu.com/link?url=6IAhYlc7tU1elPJZK0U7HDCORP9ZbVQyHcJW7Emli_Y6azulr63Wt2ZRzl4QPrGY9sM3iwJjmCODZtBn2kVEwa
三、上面的定理太高端了,但是可以利用他的思路来构造一个简单的证明!考虑一个给定的足够大的自然数
n
使得区间