题:
-
explain:判断一个数字是否是素数
-
input:数字n
-
output:如果是素数返回True,否则返回False
示例:
判断112272535095293是否是素数
算法思想:
- 首先判断是不是1或2,1不是素数,2是素数
- 其次判断是不是偶数(被2整除),偶数不是素数
- 判断能不能被小于它的奇数整除,如果可以不是素数,直接对数开根号,然后判断能不能被3到$ \sqrt n 之 间 的 奇 数 整 除 ( 大 于 之间的奇数整除(大于 之间的奇数整除(大于 \sqrt n 的 与 小 于 的与小于 的与小于 \sqrt n $一样,计算重复可以省略)
- 其余情况是素数
代码
import math
# 判断是否是素数
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = int(math.floor(math.sqrt(n)))
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True