每一个正整数 n 都可以写成若干个完全平方数之和。例如 12=4+4+4。输入 正整数 n,计算 n 最少可以表示成几个完全平方数之和。
时间: 2024-06-06 09:07:45 浏览: 289
这是一个非常经典的数学问题,称为四平方和定理。根据定理,每个正整数都可以表示成不超过四个正整数的平方和。因此,对于本题,可以先判断 n 是否本身就是完全平方数,如果是,则只需要一个数就可以表示成完全平方数之和;否则,再判断是否可以表示成两个完全平方数之和,如果可以,则只需要两个数;否则,再判断是否可以表示成三个完全平方数之和,如果可以,则只需要三个数;否则,必然可以表示成四个完全平方数之和,需要四个数。
以下是 Python 代码实现:
import math
n = int(input())
if math.isqrt(n) ** 2 == n:
print(1)
else:
for i in range(int(math.sqrt(n))+1):
if math.isqrt(n-i*i) ** 2 == n-i*i:
print(2)
break
else:
for i in range(int(math.sqrt(n))+1):
for j in range(i, int(math.sqrt(n))+1):
if math.isqrt(n-i*i-j*j) ** 2 == n-i*i-j*j:
print(3)
break
else:
continue
break
else:
print(4)
阅读全文