You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过函数判断素数?现有仅校验正整数的isPrime代码如何完善

完整素数检测功能实现

首先先明确素数的定义:仅能被1和自身整除的大于1的正整数,我们可以基于你现有的校验逻辑补充如下优化后的判断逻辑:

实现思路

  • 先修正边界校验逻辑:1 不属于素数,所以小于等于1的数值直接返回False
  • 特殊值处理:2 是唯一的偶素数,直接返回True
  • 快速排除偶数:所有大于2的偶数都不可能是素数,直接返回False,减少后续计算量
  • 因数范围优化:判断因数时不需要遍历到val-1,仅需要遍历到val的平方根即可——如果val存在大于平方根的因数,必然存在一个对应的小于平方根的因数,此前已经完成校验
  • 遍历步长优化:因为已经排除了偶数,后续仅需要遍历奇数即可,步长设为2,进一步减半计算量

完整代码

import math

def isPrime(n):
    '''
    Check if a number is a prime number
    '''
    # 兼容非数字输入的异常场景
    try:
        val = int(n)
    except ValueError:
        return False
    if val <= 1:
        return False
    # 处理唯一的偶素数
    if val == 2:
        return True
    # 排除所有大于2的偶数
    if val % 2 == 0:
        return False
    # 遍历到平方根即可,步长2只检查奇数
    for i in range(3, int(math.sqrt(val)) + 1, 2):
        if val % i == 0:
            return False
    return True

简单测试示例

print(isPrime(2))    # 输出 True
print(isPrime(9))    # 输出 False
print(isPrime(17))   # 输出 True
print(isPrime(-3))   # 输出 False
print(isPrime(1))    # 输出 False

内容的提问来源于stack exchange,提问作者learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:24:02