全栈记事交流群内一个同学的问题,正好收集一下解决方案;
四平方和的定理又称拉格朗日定理:每个正整数都可以表示至多4个正整数的平方和。如果把0包括进去,就可以表示为4个数的平方和。 比如: 5=0^2+0^2+1^2+2^2 7=1^2+1^2+1^2+2^2 对于一个给定…
四平方和的定理又称拉格朗日定理:每个正整数都可以表示至多4个正整数的平方和。如果把0包括进去,就可以表示为4个数的平方和。
比如: 5=0^2+0^2+1^2+2^2 7=1^2+1^2+1^2+2^2 对于一个给定的正整数,可能存在多种平方和的表示法。
要求你4个数排序: 0<=a<=b<=c<=d 并对所有的可能表示法按 a,b,c,d为联合主键升序排列,最后输出第一个表示法。
程序输入为一个正整数N(N<5000000),要求输出4个非负整数,按从小到大排序,中间用空格分开,如,输入5
相关代码:
import math
n = 990
size = math.ceil(n**0.5)
combs = sorted({tuple(sorted([i, j, k, l]))
for i in range(size)
for j in range(size)
for k in range(size)
for l in range(size)
if i ** 2 + j ** 2 + k ** 2 + l ** 2 == n})
for comb in combs:
print(comb)
运行结果:
相关资料:
1.https://baike.baidu.com/item/%E5%9B%9B%E5%B9%B3%E6%96%B9%E5%92%8C%E5%AE%9A%E7%90%86/4507832?fr=aladdin
2.https://blog.csdn.net/weixin_30582953/article/details/112893853