题目如下
先贴代码
import math
#判断素数
def isPrime(x:int):
if x > 1:
for i in range(2,int(math.sqrt(x))+1):
if x%i == 0:
return False
return True
else:
return False
#整合列表,如[1,2,3,4,5] ---> 12345
def zhList(lst:list):
num = 0
count = len(lst)-1
for i in lst:
num += i*10**count
count -= 1
return num
def func3(lst:list):
lst2 = []
for i in lst:
lst1 = []
while i:
lst1.append(i%10)
i //= 10
lst2.append(lst1[len(lst1) - 1])
lst2.append(lst1[0])
lst3 = []
lst_result = []
for j in lst2:
if not isPrime(j):
lst3.append(j)
else:
if len(lst3) != 0:
lst_result.append(zhList(lst3))
lst_result.append(j)
lst3.clear()
if len(lst3) != 0:
lst_result.append(zhList(lst3))
return lst_result
if __name__ == '__main__':
print(func3([1,234,5,6,7,890]))
print(func3([12,34,56,78,90]))
print(func3([123]))
- 首先需要写一个判断素数的函数isPrime(x:int)和一个将子列表中的数字整合成一个数字的函数zhList(lst:list)。
- 然后按照题目的要求,在func3()中,第一步先将正整数列表的每个数字用他的头部和尾部进行替换,存入列表lst2中。
- 遍历替换好后的列表lst2,用lst3来记录每个被质数分割的小列表,用lst_result来记录最终要求得到的列表即可。