编写一个函数,该函数获取一个唯一正数列表,并通过删除原始列表中素数位置的元素来返回该列表的子集。
示例:
输入:
[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)