我正在寻找一种算法,将一个给定的数字表示为(最多)四个方格的总和.
120 = 8 2 + 6 2 + 4 2 + 2 2
6 = 0 2 + 1 2 + 1 2 + 2 2
20 = 4 2 + 2 2 + 0 2 + 0 2
取平方根并重复重复此余数:
while (count != 4) {
root = (int) Math.sqrt(N)
N -= root * root
count++
}
Run Code Online (Sandbox Code Playgroud)
但是当N为23时,即使有解决方案,这也会失败:
3 2 + 3 2 + 2 2 + 1 2
有没有其他算法可以做到这一点?
它总是可能吗?