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

Python编程题:通过排列组合从字符串提取小于999的素数

函数实现方案

核心逻辑

  • 仅生成长度为1、2、3位的数字排列,天然满足数值小于1000的筛选要求
  • 用集合存储结果,自动去重,避免字符串内重复数字、前导零排列导致的重复数值
  • 实现轻量素数判断逻辑,过滤非素数结果
  • 最终返回升序排列的整数列表

素数判断规则

  • 小于2的整数不是素数
  • 等于2的整数是素数
  • 大于2的偶数不是素数
  • 对大于2的奇数,遍历从3到其平方根的所有奇数做取模校验,存在可整除因子则不是素数,否则为素数

完整可运行代码

from itertools import permutations

def is_prime(n):
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    for i in range(3, int(n ** 0.5) + 1, 2):
        if n % i == 0:
            return False
    return True

def primenumber_from_string(string1):
    prime_result = set()
    # 遍历1-3位长度的所有排列
    for arr_len in range(1, 4):
        for perm_item in permutations(string1, arr_len):
            current_num = int(''.join(perm_item))
            if is_prime(current_num):
                prime_result.add(current_num)
    return sorted(list(prime_result))

if __name__ == '__main__':
    # 题目示例测试
    print(primenumber_from_string("23167"))
    # 给定测试用例
    print(primenumber_from_string("8487934"))

效果说明

针对题目给出的示例输入"23167",返回结果会包含示例列举的2、3、7、23、31、167,长度超过3位的排列(如原字符串本身23167)会被自动排除,不会进入结果集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:16:17