有没有办法将任何数字表示为4个方格的总和?

RAV*_*ADA 10 java

有没有办法将任何数字表示为4个方格的总和.

例如,29可以表示为5 ^ 2 + 2 ^ 2 + 0 ^ 2 + 0 ^ 2

我尝试了下面的代码但是一些数字给出了15个例子,例如23 ^ 4 + 2 ^ 2 + 1 ^ 2 + 1 ^ 2 + 1 ^ 2

我试过的代码是:

 x=0;
 while(num!=0){
          x=(int)Math.floor(Math.sqrt(num));
         num=num-(x*x);        
}
Run Code Online (Sandbox Code Playgroud)

Buh*_*ndi 7

与波希米亚人所说的不同,我用4个术语解决了23个如下:

23 = 3^2 + 3^2 + 2^2 + 1^2
Run Code Online (Sandbox Code Playgroud)

29如下:

29 = 4^2 + 3^2 + 2^2 + 0^2
Run Code Online (Sandbox Code Playgroud)

我的逻辑将从以下开始:

  1. 从数字的平方根开始 - 1.例如,SQRT(29) = 5 - 1 = 4;这是我们的第一个任期.
  2. 从点1)获取值,对其进行平方并再次将点1的平方值加到其上并查看它是否大于N.如果是,则将第二个和项递减1并将平方值加到1的值中).
  3. 如果先前的平方值项和小于N,则找到下一个值项并重复2),直到您有所有4个项加起来为N.

注意:这是为了您的简单案例.对于像323这样的复杂情况,这可能不起作用.

323 = 17^2 + 4^2 + 3^2 + 3^2
Run Code Online (Sandbox Code Playgroud)

请记住,当您找到x项时,该项的值小于或等于 x-1(上一个)项的值.