四平方和定理

四平方和定理简单的来说即任意一个正整数都可用四个平方数的和表示。

问题描述:给定任意一个正整数n,找到若干个完全平方数,使他们和等于n,完全平方数的个数最少。

根据四平方和定理,答案只有1,2,3,4,4种。

这里运用到四平方和定理的推论:

若n=4^k*(8m+7),则个数为4,可以通过整除后取余判断;

若n本身等于一个数的平方,则无可厚非个数为1;

若n等于一个数的平方加剩余数的平方,则个数为2;

以上都不是则返回3;

直接放代码:

n=int(input("请输入一个正整数:"))
def IsPrefect(n):
    while n%4==0:
        n//=4
    if n%8==7:
        return 4
    for i in range(n+1):
        temp=i*i
        if temp<=n:
            if int((n-temp)**0.5)**2+temp==n:#运用到四平方和定理
                return 1+(0 if temp==0 else 1)
    return 3
print("完全平方数个数:",IsPrefect(n))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值