素数是大于 1 的自然数中,除了 1 和它本身之外没有别的正因数的那些数。2、3、5、7、11、13 都是素数。1 不是素数,这不是随手排除,而是为了让"每个大于 1 的整数都能唯一分解成素数的乘积"这条定理站得住,否则整套数论都要打补丁。
定义只有一句,但三个条件经常被漏掉一个。漏掉"大于 1",1 就混进来了;漏掉"正因数",负因数也会被算进去;漏掉"恰好两个",9 这种就会被误判。
定义里的三个条件,缺一不可
第一个条件,大于 1。这排除了 0 和 1。0 能被任何非零数整除,因数无穷多;1 只有 1 这一个因数。两者都不满足"两个因数"的要求。
第二个条件,自然数。这排除了负数和分数。负数和分数也能谈整除,但那已经超出素数定义的适用范围,中学阶段不讨论。
第三个条件,恰好两个正因数:1 和它本身。这一条把数分成三类。只有 1 个因数的,是 1;恰好 2 个因数的,是素数;3 个及以上的,是合数。
所以 2 是素数,因为它的因数只有 1 和 2。4 不是,因为还有 2。9 不是,因为还有 3。25 不是,因为还有 5。
为什么 1 被排除在外?
假设 1 算素数,算术基本定理立刻就塌了。6 可以写成 2 乘 3,也可以写成 1 乘 2 乘 3,还可以写成 1 乘 1 乘 2 乘 3,一直乘下去,分解方式无穷多种。"唯一分解"这四个字就失去了意义。
把 1 排除,规定素数必须恰好有两个因数,唯一性马上恢复。6 只能写成 2 乘 3,顺序不同不算不同,因为没有别的拆法。
所以"1 不是素数"是定义的选择,不是 1 有什么缺陷。历史上确实有过把 1 当素数的时期,十九世纪以后才逐渐统一。这不是数学本身变了,是约定变了。
还有一层原因:如果 1 是素数,那么"任意两个素数相乘得到合数"这类结论也要跟着改,因为 1 乘任何素数还是那个素数,不产生新数。为了整套体系简洁,1 被单独拿出来。
2 是唯一的偶素数,这句话为什么重要?
偶数都能被 2 整除。大于 2 的偶数,至少有 1、2、它本身三个因数,所以一定是合数。
于是"所有素数都是奇数"这句话是错的,反例是 2;"除 2 以外的素数都是奇数"才是对的。这类带"所有"的判断题,出题人就靠 2 来设套。
2 的特殊性还体现在别处。它是唯一的偶素数,也是最小的素数,还是唯一一个相邻两个数都是素数的成员之一(2 和 3)。再往后,3 和 5、5 和 7、11 和 13 都是素数对,但除了 2 和 3,所有素数对都是奇数对,间隔至少是 2。
判断素数:试除到根号 n 就够
最朴素的方法是一个个试除。但不需要除到 n 的一半,除到 n 的平方根就行。
理由是这样:如果 n 等于 a 乘 b,且 a 不大于 b,那么 a 一定不大于 n 的平方根。所以只要 n 有真因数,必然有一个不超过平方根。反过来说,如果试到平方根都没找到因数,n 就是素数。
题目:判断 143 是不是素数。
解:143 的平方根约等于 11.96,只需试 11 以内的素数,即 2、3、5、7、11。143 是奇数,跳过 2;各位数字和是 8,不能被 3 整除;末位不是 0 或 5,跳过 5;143 除以 7 等于 20 余 3,不行;143 除以 11 等于 13,整除了。
所以 143 等于 11 乘 13,是合数。这个例子说明,光看"长得像素数"没用,必须实际试除。
再看 127。平方根约等于 11.3,试 2、3、5、7、11,都不能整除,所以 127 是素数。整个判断过程不超过一分钟。
100 以内的素数,用筛法列一遍
把 2 到 100 依次写下,先保留 2,划掉所有 2 的倍数;再保留 3,划掉所有 3 的倍数;接着是 5、7。剩下的就是素数,一共 25 个。
为什么筛到 7 就够?因为 100 的平方根是 10,10 以内的素数只有 2、3、5、7。把这四个的倍数全部划掉,剩下的数不可能再有小于等于 10 的因数,只能是素数。
这 25 个是:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。
| 数 | 因数 | 判定 | 卡在哪一步 |
|---|---|---|---|
| 1 | 1 | 既不是素数也不是合数 | 只有一个因数 |
| 2 | 1、2 | 素数 | 唯一的偶素数 |
| 9 | 1、3、9 | 合数 | 等于 3 乘 3 |
| 51 | 1、3、17、51 | 合数 | 等于 3 乘 17,容易被当素数 |
| 91 | 1、7、13、91 | 合数 | 等于 7 乘 13 |
| 97 | 1、97 | 素数 | 试除到 9.8 即可 |
表里 51 和 91 是最容易被误判的两个。它们都是奇数,末位不是 5,看起来"很素",但都能被小素数整除。心算时先试 3、7、11、13 这四个,能拦下大部分伪装者。
最容易错在哪
错误一:把 1 当素数。这是最高频的错误。记住 1 既不是素数也不是合数,它单独一类。
错误二:把 2 当合数。理由是"2 是偶数,偶数都是合数"。前半句对,后半句错,2 只有 1 和 2 两个因数。
错误三:认为 91、51、87 是素数。它们分别等于 7 乘 13、3 乘 17、3 乘 29,都是合数。判断素数不能靠眼缘。
错误四:试除一直除到 n 的一半。浪费时间,而且容易算错。只需要除到平方根,这是定义之外最实用的一条技巧。
错误五:认为素数个数有限。欧几里得早就用反证法证明了素数有无穷多个:假设素数有限,把它们全部相乘再加 1,得到的数要么本身是素数,要么含有不在列表里的素因数,两种情况都矛盾。
错误六:把区间端点算进去。有的资料说"2 和它的 2 倍 4 之间,素数是 2 和 3",这是错的。区间是开区间,2 不算,正确答案只有 3。定理的原话是"大于 1 的数 a 与 2a 之间至少存在一个素数",端点不参与。
常见问题
1 为什么不是素数
因为素数要求恰好有两个正因数,1 只有 1 这一个。更深的原因是,如果 1 算素数,整数分解成素数乘积的方式就不再唯一,算术基本定理会失效。这是定义上的取舍。
2 是素数吗
是。2 的因数只有 1 和 2,符合定义。它是唯一的偶素数,也是最小的素数。所有大于 2 的偶数都是合数。
怎么快速判断一个数是不是素数
先用 2、3、5 的整除规则快速排除,再用 7、11、13 试除,一直试到这个数的平方根为止。全部不能整除,就是素数。超过平方根的因数不必再试。
学习通