#86. 判断一个数是不是素数(2~根号n早停法)
判断一个数是不是素数(2~根号n早停法)
题目背景
素数的定义是:如果数字 n 是素数,那么它只能被 1 和 它本身 整除。即 素数只有两个因数。
但是,无论任何数字 n 都能被 1 和 n 整除,所以我们可以将范围缩小到:。但是,又由于数字 n 的因数们是对称的,这个 对称轴 是 。
举例说明:一个数的因数是对称的。
| 数字 | 因数有哪些? |
|---|---|
| 12 | 1 2 3|4 6 12 |
| 16 | 1 2 4|4 8 16 |
| 20 | 1 2 4|5 10 20 |
| 24 | 1 2 3 4|6 8 12 24 |
| 25 | 1 5|5 25 |
| 30 | 1 2 3 5|6 10 15 30 |
⚠️注意:上面表格中的 "|" 就是对称轴。此外,当数字是16 和 25 时,对称轴是 4 和 5,由于在数字上无法画竖线,所以在对称轴两边写了一样的数字,也表达的意思是这个数字就是对称轴。
对称轴说明了,一个数字 n 在对称轴 之前有一个因数,那么在对称轴之后也必有一个因数。反过来,如果它在对称轴之前没有因数,那么在对称轴之后也不会有任何因数。
那么,范围就可以进一步从 缩减为 ,如果在这个范围内找到第三个因数,则数字 n 就不是素数;如果没有找到第三个因数,数字 n 就是素数。
题目提示
1、Python中求 :n ** 0.5。 相当于 n 的 0.5 次方。
2、和上一题目一样,需要使用for-else结构。它的具体逻辑不再详述,请 点击这里 查看。
题目描述
输入一个整数,判断这个数字是不是素数。如果是的话,打印True,否则打印False。
题目格式
输入
一个整数 n。
输出
True 或者 False,取决于输入的整数n是不是素数。
题目样例
5
True
10
False
题目限制
1、程序应在 1 秒内计算出结束。
2、输入的整数 n 的范围是:
⚠️:数据范围和之前两道题目,增大了10倍。