Monica_MTF 2023-02-09 21:00 采纳率: 73.9%
浏览 18
已结题

Python返回排序的素数

Python#394
在下面的代码中,函数isPrime()用来判断参数k是否为素数,是则返回True,否则返回False。
函数main()接收一个元组numbers作为参数,其中包含若干介于[0,9]区间的数字,要求返回这些数字能够组成的所有素数升序排列的列表,每个素数中都必须使用number中的数字,且每个数字在每个素数中只能使用一次。
例如,main((1,2,3,4))返回[1423,2143,2341,4231]。
替换下面的pass语句,完成要求的功能。
考点:选择结构与循环结构,排列

from itertools import permutations

def isPrime(k):
    if k in (2,3):
        return True
    if k%2 == 0:
        return False
    for i in range(3, int(k**0.5)+2,2):        #???
        if k%i ==0:
            return False
        return True

def main(numbers):
        pass

prime是素数的意思,k是isPrime()的一个参数,为啥有这个参数?但是这里为什么 "如果k在2到3里面,就返回True"?,如果模2等于0,那就是偶数,这里可以理解,i在(3,int(k**0.5)+2,2)范围循环,**0.5就是开方,但是为啥开方然后转整数又+2?元组转整数?还在3到2的中间?如果k模其中某个数为0,那就是偶数,返回False(咋不是模2了?)。
numbers参数是一个元组,然后结果返回的素数就是升序排列的,那应该就是用到permutations()排列函数了,重点在排列,题目要求返回列表,那就得return(list(permutations()))。

    return numbers    #返回主函数的参数
'''
答题错误!您的代码执行结果为:
(1, 2, 3, 4)
(3, 5, 7, 8)
(1, 3, 5, 7)
'''

那也就是说,用这个数字,先组合出可能的数字,然后判断是否为素数,符合条件就返回。

def main(numbers):
    if isPrime=='True':
        combinations(k)
        permutations(k)
    return list(k)
'''
代码不符合题目要求,提交失败。
要求不能使用list函数。
'''

好吧,是不能使用list()函数的……

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-09 22:02
    关注

    下面是一个完整的示例代码:

    
    from itertools import permutations
    
    def isPrime(k):
    if k in (2,3):
    return True
    if k%2 == 0:
    return False
    for i in range(3, int(k**0.5)+2,2):
    if k%i ==0:
    return False
    return True
    
    def main(numbers):
    res = []
    numbers = [str(x) for x in numbers]
    perms = [int("".join(p)) for p in permutations(numbers) if p[0] != "0"]
    for num in perms:
    if isPrime(num):
    res.append(num)
    return sorted(res)
    

    例如,main((1,2,3,4)) 将返回 [1423, 2143, 2341, 4231]。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月9日

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100