题目:把一个自然数分解成最多4个平方数的和。
from random import choices
from itertools import chain
def fun(n):
while True:
x=list(range(1,n))
y=list(chain(*[choices(x,k=i)for i in range(1,5)]))
rule=lambda m:m**2
num=map(rule,y)
if sum(num)==n:
return y
break
print(fun(10))
没有结果,也无法调试。
我的思路是利用循环一个一个试,以便达到用的数最少
1、这个y是个10个元素的列表,建议改成for循环
2、x其实可以不考虑int(n**0.5) + 1之后的部分