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

如何在Python中关联质数检测器与自定义数组并分类质数与非质数

解决方案

1. 关联数组遍历与质数检测

你已经完成了数组生成和质数检测的核心代码,只需要遍历生成的整数数组,对每个元素调用质数检测函数,再根据结果分类存入两个数组即可。这里可以把isprime函数的返回值改成布尔值,让逻辑判断更简洁(也可以保留原字符串返回,对应调整判断逻辑)。

完整实现代码

# 定义目标范围
r1, r2 = 2, 100

# 生成范围内整数数组的函数
def createList(r1, r2):
    return list(range(r1, r2 + 1))

# 质数检测函数,返回布尔值便于逻辑判断
def isprime(n):
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    w = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += w
        w = 6 - w
    return True

# 生成目标数组
createdList = createList(r1, r2)

# 初始化分类数组
prime_numbers = []
non_prime_numbers = []

# 遍历数组完成分类
for num in createdList:
    if isprime(num):
        prime_numbers.append(num)
    else:
        non_prime_numbers.append(num)

# 输出测试结果
print("质数数组:", prime_numbers)
print("非质数数组:", non_prime_numbers)

如果要保留原isprime返回字符串的写法,遍历部分修改为:

for num in createdList:
    check_result = isprime(num)
    if check_result == "Prime":
        prime_numbers.append(num)
    else:
        non_prime_numbers.append(num)

2. 构建本地质数/非质数数据库

可以用Python内置的sqlite3模块搭建本地数据库,无需额外安装依赖,实现数据的持久化存储与复用:

数据库操作代码示例

import sqlite3

# 连接数据库(文件不存在则自动创建)
conn = sqlite3.connect('prime_db.db')
cursor = conn.cursor()

# 创建存储表:记录数字和质数标识
cursor.execute('''
CREATE TABLE IF NOT EXISTS number_classification (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    number INTEGER UNIQUE NOT NULL,
    is_prime BOOLEAN NOT NULL
)
''')

# 将分类数据插入数据库(忽略已存在的数字)
for num in prime_numbers:
    cursor.execute('INSERT OR IGNORE INTO number_classification (number, is_prime) VALUES (?, ?)', (num, True))

for num in non_prime_numbers:
    cursor.execute('INSERT OR IGNORE INTO number_classification (number, is_prime) VALUES (?, ?)', (num, False))

# 提交更改并关闭连接
conn.commit()
conn.close()

# 测试数据库查询
def query_numbers(is_prime):
    conn = sqlite3.connect('prime_db.db')
    cursor = conn.cursor()
    cursor.execute('SELECT number FROM number_classification WHERE is_prime = ?', (is_prime,))
    result = cursor.fetchall()
    conn.close()
    return [item[0] for item in result]

# 输出查询结果
print("数据库中的质数:", query_numbers(True))
print("数据库中的非质数:", query_numbers(False))

运行后会在本地生成prime_db.db文件,后续可以直接查询该文件获取已分类的数据,无需重复计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:25:26