鱼C论坛

 找回密码
 立即注册
查看: 2127|回复: 6

[已解决]找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数

[复制链接]
发表于 2023-6-4 19:12:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】

读入一个自然数构成的列表,找出其中的每一个素数,然后放入另外一个列表,并输出这个列表。
【输入形式】

按照列表的形式输入,包括方括号,元素之间用逗号分隔。
【输出形式】

直接用print输出列表
【样例输入】

[2,3,5,7,9,11,23]

【样例输出】

[2, 3, 5, 7, 11, 23]

请问这个题有什么简单易懂的方法吗
最佳答案
2023-6-4 19:16:55
本帖最后由 sfqxx 于 2023-6-4 19:31 编辑

这个题目可以用一个简单的循环遍历每个数,判断是否为素数,如果是素数则添加到结果列表中,最后输出结果列表即可。

下面是 Python 的示例代码:
def is_prime(num):
    """判断一个数是否为素数"""
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

def find_primes(numbers):
    """在列表中找出所有的素数"""
    primes = []
    for num in numbers:
        if is_prime(num):
            primes.append(num)
    return primes

# 读取输入数据
numbers = eval(input())

# 找出所有素数并输出
primes = find_primes(numbers)
print(primes)

这里定义了两个函数,`is_prime()` 函数用于判断一个数是否为素数,`find_primes()` 函数则用于在给定的列表中找出所有的素数。根据输入数据调用 `find_primes()` 函数,然后将得到的结果输出即可。

有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-4 19:16:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sfqxx 于 2023-6-4 19:31 编辑

这个题目可以用一个简单的循环遍历每个数,判断是否为素数,如果是素数则添加到结果列表中,最后输出结果列表即可。

下面是 Python 的示例代码:
def is_prime(num):
    """判断一个数是否为素数"""
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

def find_primes(numbers):
    """在列表中找出所有的素数"""
    primes = []
    for num in numbers:
        if is_prime(num):
            primes.append(num)
    return primes

# 读取输入数据
numbers = eval(input())

# 找出所有素数并输出
primes = find_primes(numbers)
print(primes)

这里定义了两个函数,`is_prime()` 函数用于判断一个数是否为素数,`find_primes()` 函数则用于在给定的列表中找出所有的素数。根据输入数据调用 `find_primes()` 函数,然后将得到的结果输出即可。

有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 19:29:48 | 显示全部楼层
可以使用以下算法来实现这个问题:

定义一个新的空列表 results,作为存放所有素数的容器。
循环遍历输入的列表中的每一个数字 num。
对于每个 num,循环从 2 开始遍历到 num-1。
如果存在一个小于 num 且整除 num 的整数,则 num 不是素数,退出内层循环。
如果内层循环正常结束(即没有找到任何小于 num 的因数),则将 num 添加到结果列表中。
返回结果列表。
以下是 Python 代码实现:
def find_primes(nums):
    results = []
    for num in nums:
        is_prime = True
        for i in range(2, num):
            if num % i == 0:
                is_prime = False
                break
        if is_prime and num > 1:
            results.append(num)
    return results

# 测试代码
nums = [2, 3, 5, 7, 9, 11, 23]
print(find_primes(nums))  # 输出 [2, 3, 5, 7, 11, 23]
以上代码定义了一个名为 find_primes 的函数,接受一个列表参数 nums,返回一个新的列表,其中仅包含输入列表中的素数。可以通过传递给该函数样例输入所示的列表 nums 来测试该函数,并通过输出结果 [2, 3, 5, 7, 11, 23] 来验证它是否正确。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 19:31:18 | 显示全部楼层
[b]这个题目可以用一个简单的循环遍历每个数,判断是否为素数,如果是素数则添加到结果列表中,最后输出结果列表即可。

下面是 Python 的示例代码:
def is_prime(num):
    """判断一个数是否为素数"""
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

def find_primes(numbers):
    """在列表中找出所有的素数"""
    primes = []
    for num in numbers:
        if is_prime(num):
            primes.append(num)
    return primes

# 读取输入数据
numbers = eval(input())

# 找出所有素数并输出
primes = find_primes(numbers)
print(primes)

这里定义了两个函数,`is_prime()` 函数用于判断一个数是否为素数,`find_primes()` 函数则用于在给定的列表中找出所有的素数。根据输入数据调用 `find_primes()` 函数,然后将得到的结果输出即可。

有用请设置最佳答案
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-4 20:07:35 | 显示全部楼层
sfqxx 发表于 2023-6-4 19:16
这个题目可以用一个简单的循环遍历每个数,判断是否为素数,如果是素数则添加到结果列表中,最后输出结果列 ...

请问第5行是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 20:13:28 | 显示全部楼层
2991462923@qq.c 发表于 2023-6-4 20:07
请问第5行是什么意思

屏幕截图 2023-06-04 201244.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 20:30:45 | 显示全部楼层
以下是一个使用Python编写的简单算法。在这个代码中,我们首先创建了一个名为 is_prime 的函数,它可以判断一个数是否是素数。然后我们在输入列表中遍历每个元素,如果该元素是素数,我们就将其添加到新的列表中。
def is_prime(n):
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    while (i * i <= n):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
        i += 6
    return True

def find_primes_in_list(lst):
    primes = []
    for num in lst:
        if is_prime(num):
            primes.append(num)
    return primes

input_list = [2, 3, 5, 7, 9, 11, 23]  # 输入的自然数列表
output_list = find_primes_in_list(input_list)  # 找出列表中的素数
print(output_list)  # 输出素数列表

运行此代码后,应该会打印出  [2, 3, 5, 7, 11, 23] ,这是输入列表中的所有素数。

该代码会从头到尾遍历输入的列表,对每个元素检查是否为素数,如果是,则添加到结果列表中。 is_prime  函数用于判断一个数是否为素数,这个函数采用了一种常用的快速判断素数的方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 10:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表