更新时间:2024-06-13 16:24
卡迈克尔数的定义是对于合数n,如果对于所有与n互质的正整数b,都有同余式b^(n-1)≡ 1 (mod n)成立,则称合数n为Carmichael数。
费马小定理(Fermat theorem):
设p为一素数,对于任意整数a,有a(p-1)≡ 1 (mod p)。
假如p是质数,且gcd(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1
卡迈克尔数有至少3个正素因数。如图一是首个k个正素因数的卡迈克尔数,k=3,4,5,...:
如图二是首十个有4个素因数的卡迈克尔数:
设p为一素数,而a与p互素,则 a^p - a 必为p的倍数。 利用费马小定理,对于给定的整数n,可以设计一个素数判定算法。通过计算d=a^(n-1)mod n来判定整数n的素性。当d不等于1时,n肯定不是素数;当d等于1时,n则很可能是素数。但也存在合数n使得d=a^(n-1)≡1(mod n)。例如,当a=2时,满足d=1的最小合数是n=341。为了提高测试的准确性,我们可以随机地选取多个a对a^(n-1)mod n的结果进行测试。能通过全部a的测试的合数n,被称为Carmichael数,前3个Carmichael数是561,1105,1729。Carmichael数是非常少的。在1~100000000范围内的整数中,只有255个Carmichael数。
由费马小定理可得,若n为素数,则对任意整数b,且b和n互素,都有bn-1(mod n) ≡1。因此,若存在整数b,使得bn-1(mod n)≡1不成立,则n是一个合数。
利用上述结论,对于给定的整数n,可以设计一个素数判定算法。
1.随机选取整数b,2<=b<=n-2,计算d =bn-1 (mod n)。当d不等于1时,n是合数;当d等于1时,n则很可能是素数,对于本次判断来说,判断错误的概率为1/2。
2.如此重复多次,可以将判断错误的概率降低至期望值以下。
但是,上述方法有缺陷。因为Carmichael数的存在,可导致上述算法给出一个错误的判断。
前3个Carmichael数是561,1105,1729。Carmichael数是非常少的。在1~100000000范围内的整数中,只有255个Carmichael数。
列举100000000以内的255个卡米切尔数,括号内为它的最小因子:
561(3)
1105(5)
1729(7)
2465(5)
2821(7)
6601(7)
8911(7)
10585(5)
15841(7)
29341(13)
41041(7)
46657(13)
52633(7)
62745(3)
63973(7)
75361(11)
101101(7)
115921(13)
126217(7)
162401(17)
172081(7)
188461(7)
252601(41)
2016年物流工人余建春带着自己的五项数学发现登上了浙江大学数学系的讲台,与教授和博士生们“同堂论道”,最具价值的发现是一组“卡迈克尔数”(Carmichael数)的判别准则。
“卡迈克尔数”是一种伪素数(伪质数),在一亿以内的正整数中只有255个。蔡天新验证了余建春提出的公式,认为在一定范围内,余建春的发现能够以更高的效率找出更多的“卡迈克尔数”。
他的新算法同时得到了国际学术界的普遍赞赏。密苏里大学数学家William Banks告诉CNN ,这种算法一经确认,即可成为卡迈克尔数领域的一大重要发现。