导航
当前位置:首页 > 公式大全

质数判断公式python函数-质数判断公式函数 python

2026-06-13 07:49:36 作者 :佚名 围观 : 1次

```python import math def is_prime(n): 先做个好办粗暴的过滤:偶数除了 2 都不是 if n < 2: return False if n 2: return True if n % 2 0: return False 接下来猜一猜:从 3 启动跳着往大数跑,把奇数都砍掉,剩个啥来着就是啥 limit = int(math.sqrt(n)) + 1 for i in range(3, limit, 2): if n % i 0: return False return True 随意挑几个数玩玩,看看这逻辑咋样 print("测试一下 7: ", is_prime(7)) print("测试一下 10: ", is_prime(10)) print("测试一下 17: ", is_prime(17)) print("测试一下 9: ", is_prime(9)) 9 肯定不对,出于 33 print("测试一下 97: ", is_prime(97)) 实际上这函数有点底子,毕竟 1 和 2 是边界情况 print("测试一下 1: ", is_prime(1)) print("测试一下 2: ", is_prime(2)) 再给个更大的数试试,比如 1009 print("测试一下 1009: ", is_prime(1009)) ``` ```python 为了真正搞懂它,咱们得把原理摊开来讲,别看不用那些大词儿,但思路得理清楚。 实际上判断一个数是不是质数,核心思想就俩:
1.它不能随意整除;
2.它的大平方根以内得找不到除数。 你想啊,比如 15,3 整了它,那肯定不中。再比如 25,5 整了它也行不通。 那 97 呢?从 3 启动算到 9(出于 sqrt(97) 大约是 9.8),3 不中,5 不中,7 也不中,那就稳了。 这个逻辑实际上是高级一点的算法,直接写死一层层试,效率忒低了,毕竟要是数大到亿级,试几千次忒慢。 故此数学界有个定理告诉你,只要发现一个 <= 根号的因子,那它就是合数;否则就是素数。 再加上前面的偶数过滤,实际上就省了 90% 的脑子活。 ``` ```python 那要是你手速快,想自己写个小工具呢?实际上能够封装成函数,直接调用。 比如我想判断 103 是不是素数,我直接写 is_prime(103) 就行,它内部会执行那些逻辑。 并且这个函数回值挺干净利落,就是个布尔值 True 或 False,跟其他函数回值不一样,但正是这特征让它好用。 在 Python 里,函数回值是值,不是打印,故此不用管 print()。 ``` ```python 实际上啊,这不只是是写代码,更是一种思维习惯,把难题拆解得特别细。 要是数忒小,比如 2 要么 3,不用去循环,直接回,这叫边界处理,别硬套公式。 要是数忒大,比如 10^100,循环跑几分钟都过不了,这时候就得用试除法以外的东西。 试除法就是暴力穷举,别看慢,但在小到中等规模数据里还是王道,出于实现好办,代码量少。 要是到了大数领域,那就要上 Miller-Rabin 测素性了,但这可能超出本函数的范畴,毕竟忒复杂。 ``` ```python 为了验证代码的健壮性,我们不妨组个测试集,覆盖各种边缘情况。 起初肯定是那些小的数,1 肯定不是质数,2 是最小的质数,3 也是,4 4 是合数。 然后试试那些好办看错数的,比如 9 是 3 乘 3,肯定不中。 还有像 15, 21, 25, 27 这种明显能被小整数整除的,用这个函数就能一眼识别出来。 再想想那些看起来像质数的数,比如 7, 13, 17, 19, 23, 29 这些,用函数算一下,应当都是 True。 至于 31, 37, 41, 43, 47 这些,也是 True,彻底符合直觉,说明函数逻辑没难题。 ``` ```python 这里还能够寻思性能难题,比如工夫复杂度是 O(sqrt(n)),对于贼大的 n 可能会超时。 但在绝大多数实际应用场景中,这个复杂度是够用的,毕竟大局部数据都有限长。 要是数据量特别大,那就要寻思分治法要么更高级的算法了,但这归于进阶话题。 目前我们就把函数写好了,试着运行一下,看看它能不能帮上忙。 ``` ```python 运行结局出来后,咱们再回头看一遍这段代码,它实际上就是个“过滤器”。 它先把偶数筛掉,把 2 单独拎出来,然后从 3 启动往右跳半格找因子,没找到就是素数。 这种逻辑别看好办,但核心思想是对的,关键在于啥时候启动循环,啥时候退出。 在写代码时,我们往往好办犯坑,比如把 n 传成 1,害得死循环要么报错,故此提前判断挺关键。 另外,数学里的质数定义里 1 不算,这点也得刻在脑子里,别写死逻辑时忘了。 ``` ```python 实际上啊,这个函数不仅是个工具,更是理解数论的一个切入点。 每一个质数都是“不能被其他质数整除”的数,这是最本质的特征。 当你遇到一个数认定模 2 余 1,模 3 余 1,模 5 余 1 时,恭喜你,大约率它是质数。 出于要是是合数,它的因子一定小于它的平方根,而平方根的平方根更小,挺快就能被摸出来。 故此这个函数别看慢,但它告诉我们要关切的点在哪,是要找平方根以内的因子。 ``` ```python 在工程落地时,我们可能会优化一下,比如把平方根的取整换成 float 转 int,避免浮点数误差。 要么在某些特殊情况下,比如 n 是平方数,直接 return False 也能提升速度,但通用性会牺牲一点。 不过对于一般场景,还是保持原样最稳妥,代码可读性大于一点点性能优化。 ``` ```python 总结一下,这个函数就是 Python 里处理质数判断的“小能手”,好办高效地处理了大局部情况。 它通过数学原理指导下的试除法实现,既符合算法思维,又保证了代码的简洁性。 别看它不是最完美的,但在 99% 的编程日常中,它就是判断素数的首选方案。 赶明儿遇到这类难题,直接套上这个函数,就能快速拿到答案,再也不用手算了。 并且它还能作为教学示例,帮初学者理解函数是如何封装的,逻辑是如何拆分的。 ``` ```python 好了,这局部全体写完了,代码也跑通了,我们能够放心地用这个函数去解决难题了。 接下来就把这段代码保存下来,到下一个任务里调用它,看看效果如何。 或许你会愣住了地发现,哪怕输入一个大整数,它也能瞬间给出结局,让你踏实不少。 毕竟代码里没有废话,只有纯粹的逻辑,这才是高效编程该有的样子。 ``` ```python 最终,咱们把这段代码发出去,看看其他人能不能跑通。 要是没难题,那就说明逻辑没毛病,能够放心地在项目里用了。 要是报错,大约率是出于输入参数不对,比如负数要么 1,这时候就得重新审视输入处理局部了。 总而言之,这个函数就是个小小的助手,帮我们在数字世界里做点基础判断,别看不起眼,但不可或缺。 ```
相关标签:
相关文章
  • 通风换气量计算公式-通风换气量计算公式

    通风换气量计算公式:核心指标与工程应用深度解析 通风换气量计算公式作为通风与空调工程领域的基石,其准确性的直接决定了建筑能耗控制效果、室内空气品质及人员健康安全。长期以来,该公式在各类职业资格考试及

    2026-05-23
  • 解一元二次方程公式法-一元二次方程公式法

    解一元二次方程公式法的权威指引与实战攻略 一元二次方程是初中乃至后续数学学习中最为核心且高频出现的考点之一,其解法是构建代数思维逻辑的基石。长期以来,学生在学习此类题目时往往陷入盲目试算的困境,无法

    2026-05-23
  • 比例计算方法及公式-比例计算方法公式

    比例计算的逻辑与核心公式解析 比例计算方法及公式是职场沟通、财务核算及数据管理中的基石工具,其本质在于寻找两个或多个数值之间的相对关系,从而实现资源的优化配置与效率提升。在职场环境中,无论是分配奖金

    2026-05-23
  • 多重指数导数公式大全-多重指数导数公式全

    多重指数导数公式大全解析与备考攻略 在高等数学的宏大体系中,函数求导是基石,而多重指数函数则是连接初等函数与更高级微分理论的桥梁。多重指数导数公式大全作为学习这一领域不可或缺的权威工具,其重要性不言

    2026-05-23
  • 经验熵公式-经验熵公式改写

    数智破局:经验熵公式的深度解析与应用指南 经验熵公式作为当前区域经济与产业互动的核心模型,已在从业十余年的专业实践中确立其权威地位。它超越了传统线性预测的局限,通过引入动态的熵值机制,精准捕捉了复杂

    2026-05-23