浅谈勒让德三平方和定理、拉格朗日四平方和定理
ProjectDaedalus
共 4031字,需浏览 9分钟
· 2022-06-20
这里介绍下数论中的勒让德三平方和定理、拉格朗日四平方和定理。并介绍如何巧妙利用它进行解决问题
基本原理
「1. 拉格朗日四平方和定理」
拉格朗日四平方和定理,也被称为Bachet猜想。该定理指出任一自然数都可以表示为四个整数平方之和。该定理由拉格朗日于1770年证明。即:
举个栗子,如下所示
「2. 勒让德三平方和定理」
勒让德三平方和定理指出如果一个自然数n符合下述条件时,则可以表示为三个整数平方之和。其中a、b均为非负整数
实践
学习过程中要善于理论联系实际。故在介绍完勒让德三平方和定理、拉格朗日四平方和定理后,现在我们来进行实践。这里以LeetCode的第279题——完全平方数 为例
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是
示例 1
输入:n = 12
输出:3
解释:12 = 4 + 4 + 4
示例 2
输入:n = 13
输出:2
解释:13 = 4 + 9
提示 1 <= n <= 104
首先说明该题可通过动态规划解决,但这里为了说明上述两个定理的应用。故我们采用数学解法。具体地:
当n满足4^k*(8m+7)形式时,由于不满足勒让德三平方和定理。同时结合拉格朗日四平方和定理易知,此时直接返回4即可 当n不满足4^k*(8m+7)形式时,即满足勒让德三平方和定理。则此时答案只能会是1、2、3中的一个 如果n为一个完全平方数,则此时答案必然为1 如果n满足a^2+b^2形式,即答案为2。则我们只需对所有的a进行枚举,其中a的范围为[1, √n]。然后判断n-a^2是否为完全平方数即可 如果排除了上述所有情形,则答案只能为3。即n满足a^2+b^2+c^2形式
此时,我们不难通过Java实现上述思路。代码如下所示
class Solution {
public int numSquares(int n) {
// 如果不满足 勒让德三平方和定理, 则其必然只能满足 拉格朗日四平方和定理
// 即: n = a*a + b*b + c*c + d*d
if( checkAnswer4(n) ) {
return 4;
}
// 判断是否为 n = a*a 场景
if( isSquare(n) ) {
return 1;
}
// 判断是否为 n = a*a + b*b 场景
for (int a=1; a*a<=n; a++) {
int b = n - a*a;
if( isSquare(b) ) {
return 2;
}
}
// 由于满足勒让德三平方和定理条件, 故此时只可能为3
// 即: n = a*a + b*b + c*c
return 3;
}
/**
* 判断n是否能表示为 4^k*(8m+7) 形式, 即不满足 勒让德三平方和定理
* @param n
* @return
*/
private boolean checkAnswer4(int n) {
while ( n%4==0 ) {
n = n / 4;
}
boolean res = (n%8 == 7);
return res;
}
/**
* 判断是否为完全平方数
* @param n
* @return
*/
private boolean isSquare(int n) {
int x = (int)Math.sqrt(n);
boolean res = ( x*x == n);
return res;
}
}
评论
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
日本影山优佳最新杂志照,展现充满透明感的美丽
今天的图文分享的是影山优佳的杂志写真。元日向坂46的影山优佳,登上了写真杂志《周刊FLASH》5/7和5/14合并号的封面。影山优佳是日本艺人、女演员、前偶像。身高155厘米。2001年5月8日出生于东京都。2023年7月从组合日向坂46毕业,之后作为演员活跃的影山优佳,在《周刊FLAS
python教程
0
浅谈几款XML文档解析工具以及优缺点
一、简介XML,一种可扩展标记语言,通常被开发人员用来传输和存储数据,定义也比较简单,通常如下方式开头,用来表述文档的一些信息。<?xml version="1.0" encoding="UTF-8"?>例如下面这个简单的文档。<?xml versio
Stephen
1
【倒计时】下周三!CCBN2024 IPTV创新发展论坛即将召开!
在电视产业的历史长河中,每一次政策调整和技术革新都标志着行业的一次重大转折。自去年开始展开的电视整改行动,不仅是对行业现状的一次全面审视,更是对未来发展的一次重新布局。IPTV、OTT、有线电视等各个领域都受到了广泛的影响,从套娃收费的整顿到操作优化的推进,整改行动触及了电视大屏行业的每一个角落。这
流媒体网
0
炸裂了!小仙女协商肉偿租房,震碎了三观!
2024年热点吃瓜(更新至4月)https://pan.xunlei.com/s/VNvUwSmX927mlt-7jr9Vnmp5A1?pwd=43gv#
逆锋起笔
10
免费AI编程助手,支持Visual Studio,让编码愉悦又轻松
前言前有Copilot各种酷炫操作,今有国产软件杀出重围。给大家介绍的是一款国内的国产编程神器,可与微软GitHub Copilot比比身手。关键它还是完全免费。它就是:非十团队国产自主研发的Fitten Code。此工具的速度是GitHub Copilot的两倍,同时它的精确度还有大约2
dotNET全栈开发
10
我想知道,高德和百度,谁的算法更准?
点击上方牲产力关注我在线提问,平常导航你是用高德还是百度呢?我个人喜欢用百度地图,媳妇儿是用高德,但而且她打车也会直接用高德,我还会再用滴滴来单独打车。总感觉导航嘛,不同软件应该大差不差,没想到一番搜罗还真有些奇奇怪怪的对比。01 大路vs小路江湖传闻,当百度还在大路上给你规划地图时,高德已经给你寻
TTTEED
2
深入理解Camera 三 (相机应用层)
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、概览二、Camera Api v2三、Camera Framework四、Camera App Demo相机应用层一、概览相机应用处于整个框架的上层,在现实生活中,为了满足各式各样的应用场景,会加入很多业
程序员Android
10