用给定的输出替换列表中的素数索引



编写一个函数,该函数获取一个唯一正数列表,并通过删除原始列表中素数位置的元素来返回该列表的子集。

示例:

输入:

[2, 567, 34, 35, 8, 77]

这里,元件2处于第一位置,元件567处于第二位置,依此类推。

输出:

[2, 35, 77]

这里,当元件567、34和8出现在素数位置,即第2、第3和第5时,它们被去除。

使用is_prime并枚举

def is_prime(num):
if num < 2:
return False
for integer in range(2, int(num ** 0.5)+1):
if num % integer == 0:
return False
return True
lst = [2, 567, 34, 35, 8, 77]
# Use list comprehension to filter out numbers with prime index
# use start argument to start enumeration at 1 (0 is the default)
# for i, v in enumerate(lst, start = 1) provides a list
# of tuples of index and value for each element in list lst
answer = [v for i, v in enumerate(lst, start = 1) if not is_prime(i)]
print(answer) # Output: [2, 35, 77]

#函数,用于检查数字是否为素数或非

def isPrime(num):
if num < 2:
return False

elif num == 2:
return True

#to check if num is divisible by any number in range [2, num/2]
for i in range(2, int((num/2) + 1)):
if (num % i == 0):
return False
return True
def get_subset(numbers: list):
subset = []
for index, number in enumerate(numbers):
if not isPrime(index + 1):
subset.append(number)
return subset

试试这个:

l2 =[]
for index, value in enumerate(l1):
#print(index)
if index > 1:
# Iterate from 2 to n / 2  
for i in range(2, index): 
if (index % i) == 0: 
print(index, "is not a prime number") 
l2.append(value)
break
else:
print(index, " is a prime number") 
else: 
print(index, "is not a prime number")
l2.append(value)
print(l2)

最新更新