Python写代码素数

怎样将列表中的素数放在前面,非素数放在后面?
该怎么写代码?我的为啥混了

img

def isPrime(num): #定义判断素数函数
    if num < 2:
        return False
    i=2
    while i*i<=num:        
        if num % i == 0:
            return False
        i+=1
    return True

a=[4,6,8,2,3,9,11]
print(sorted(a,key=isPrime,reverse=True)) #排序,使用素数函数

参考GPT和自己的思路:可以使用一个函数来判断一个数是否为素数,然后再遍历列表,将素数放在前面,非素数放在后面。实现代码如下:

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 sort_prime(lst):
    primes = []
    non_primes = []
    for num in lst:
        if is_prime(num):
            primes.append(num)
        else:
            non_primes.append(num)
    return primes + non_primes

将要排序的列表作为参数传递给 sort_prime 函数,该函数会遍历列表,并通过 is_prime 函数检查每个数字是否为素数。素数会被添加到 primes 列表中,非素数会被添加到 non_primes 列表中。最后,返回一个新列表,其中素数在前面,非素数在后面。

使用示例:

lst = [2, 3, 4, 5, 6, 7, 8, 9]
sorted_lst = sort_prime(lst)
print(sorted_lst)  # Output: [2, 3, 5, 7, 4, 6, 8, 9]