java – 有没有办法代表任何数字作为4个方块的总和?

前端之家收集整理的这篇文章主要介绍了java – 有没有办法代表任何数字作为4个方块的总和?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法代表任何数字作为4个方格的总和.

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

我尝试了以下代码,但是一些数字给出5terms,例如23 ^ 2 2 ^ 2 1 ^ 2 1 ^ 2 1 ^ 2

我试过的代码是:

x=0;
 while(num!=0){
          x=(int)Math.floor(Math.sqrt(num));
         num=num-(x*x);        
}

解决方法

不像波希米亚人所说,我以四个方式解决了23个问题:
23 = 3^2 + 3^2 + 2^2 + 1^2

和29如下:

29 = 4^2 + 3^2 + 2^2 + 0^2

我的逻辑开始于:

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

注意:这是为了你的简单的情况.对于复杂情况,例如323,这可能不行.

323 = 17^2 + 4^2 + 3^2 + 3^2

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

猜你在找的Java相关文章