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

如何在Python中实现与Java素数校验逻辑等价的for循环写法

Python的for循环是基于可迭代对象的遍历机制,和Java的三段式for循环结构不同,没办法直接在for声明处写类似i*i <= number的终止条件,但有两种等价的实现方案,可以完全避免在循环内部加额外的判断:


方案1:直接指定range的终止边界为平方根

通过计算待校验数的平方根作为range的终止值,循环只会遍历到平方根位置,逻辑和你的Java版本完全一致:

Python3.8及以上版本(推荐,无浮点数精度问题)

使用math.isqrt直接返回整数平方根,避免浮点数精度误差:

import math
def is_prime(number):
    # 额外边界条件此处省略
    for i in range(2, math.isqrt(number) + 1):
        if number % i == 0:
            return False
    return True

兼容旧Python版本

用math.sqrt计算后转整数,加1是因为range的终止值是开区间,避免刚好是平方数时漏判:

import math
def is_prime(number):
    # 额外边界条件此处省略
    for i in range(2, int(math.sqrt(number)) + 1):
        if number % i == 0:
            return False
    return True

方案2:使用while循环实现和Java完全一致的逻辑

如果不想导入math模块,也可以用while循环复刻Java版本的写法:

def is_prime(number):
    # 额外边界条件此处省略
    i = 2
    while i * i <= number:
        if number % i == 0:
            return False
        i += 1
    return True

以上两种方案的时间复杂度和你写的Java版本完全一致,都没有多余的循环次数和内部判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:18:03