笔试真题之判断一个数字是否是素数(算法详解及python实现)

题:

  • 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

你可能感兴趣的:(面试小能手,python,数据结构,算法)