质数一个很重要的特点:`除了1和它自身外,不能被其他自然数整除`
扩展
(1)质数m, n相乘得到s的话,s便不再是质数,但是其因数也是唯一确定,即:1, s, m, n
(2)质数集合S => {a0, a1, ..., an} 中任意个不同的质数相乘得s,如果n是一个质数,且n是s的因数,则s可以被n整除。
自然数的前100个质数为:
2
3
5
7
11
13
17
...
523
541
应用场景
背景:一块完整的图像被拆散成若干个碎片,而集合中又有若干个这样的图像被拆散。给你一块碎片,确定它属于哪一个图像。
使用质数实现该场景时,可能存在的问题:
(1)质数个数不可能"无限扩展"(虽然质数是无限个)
(2)目前整数所能表示的范围有限
(3)碎片可能是伪造的
方案
用id标识每一张图像;所有图像共用一个质数列表(无规则),并且各个图像维护一个指针,指针指向列表中的质数(给碎片分配质数);使用一种对称加密算法,将分配给碎片的质数进行加密,且每一张图像的密钥尽可能不同;使用一种散列算法将碎片信息进行加密,确保碎片信息唯一真实。
扩展
如果整数能够表示的范围无限大并且计算机底层运算支持,而且我们获悉了无限的质数集合。当再次判断一个元素是否在集合中时,目前使用的通过查询的手段可能将会被"通过计算"代替(盲目猜测 > __ <)。