题解 | #最少的完全平方数#

最少的完全平方数

https://www.nowcoder.com/practice/4b2f5d4c00f44a92845bdad633965c04

借鉴左神的思路:
采用方法一:
根据四平方和定理:
1.一个数最多可以被4个平方和累加得到。
2.任何数消掉4的因子结论不变。
3.如果一个数模8等于7,则这个数一定被4个平方数累加得到

import java.util.*;
public class Main{
    //四平方和定理
    //任何数消掉4的因子结论不变
    public static int process(int n){
        while(n%4==0){
            n/=4;
        }
        if(n%8==7)
            return 4;
        for(int i=0;i*i<=n;i++){
            int b=(int)Math.sqrt(n-i*i);
            if(i*i+b*b==n)
                return ( i>0 && b>0 )?2:1;
        }
        return 3;
    }
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        System.out.print(process(n));
    }
}


全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务