拉格朗日的四平方定理指出,每个自然数都可以写成四个非负整数的平方和。
For eg.
Similarly
Similarly for any
上面的标识可以从欧拉的四个平方标识得出:表示我们可以写一个2的乘积(可以写成4平方和)作为4平方和。
C++
// CPP program for Lagrange's four square identity
#include
using namespace std;
// Prints all the possible combinations 4 numbers
// whose sum of squares is equal to the given no.
void printFourSquares(int a)
{
// loops checking the sum of squares
for (int i = 0; i * i <= a; i++) {
for (int j = i; j * j <= a; j++) {
for (int k = j; k * k <= a; k++) {
for (int l = k; l * l <= a; l++) {
// if sum of four squares equals
// the given no.
if (i * i + j * j + k * k + l * l == a) {
// printing the numbers
cout << a << " = " << i << "*" << i
<< " + " << j << "*" << j << " + ";
cout << k << "*" << k << " + "
<< l << "*" << l << "\n";
}
}
}
}
}
}
// Driver Code
int main()
{
int a = 74;
// 74 = 0*0 + 0*0 + 5*5 + 7*7
// 74 = 0*0 + 1*1 + 3*3 + 8*8
// 74 = 0*0 + 3*3 + 4*4 + 7*7
// 74 = 1*1 + 1*1 + 6*6 + 6*6
// 74 = 2*2 + 3*3 + 5*5 + 6*6
printFourSquares(a);
return 0;
}
Java
// Java program for Lagrange's four square identity
class GFG
{
// Prints all the possible combinations 4 numbers
// whose sum of squares is equal to the given no.
static void printFourSquares(int a)
{
// loops checking the sum of squares
for (int i = 0; i * i <= a; i++)
{
for (int j = i; j * j <= a; j++)
{
for (int k = j; k * k <= a; k++)
{
for (int l = k; l * l <= a; l++)
{
// if sum of four squares equals
// the given no.
if (i * i + j * j + k * k + l * l == a)
{
// printing the numbers
System.out.print( a + " = " + i + "*" + i
+ " + " + j + "*" + j + " + ");
System.out.println( k + "*" + k + " + "
+ l + "*" + l);
}
}
}
}
}
}
// Driver Code
public static void main(String[] args)
{
int a = 74;
// 74 = 0*0 + 0*0 + 5*5 + 7*7
// 74 = 0*0 + 1*1 + 3*3 + 8*8
// 74 = 0*0 + 3*3 + 4*4 + 7*7
// 74 = 1*1 + 1*1 + 6*6 + 6*6
// 74 = 2*2 + 3*3 + 5*5 + 6*6
printFourSquares(a);
}
}
// This code is contributed by smitha
Python3
# Python program for Lagrange's four square identity
# Prints all the possible combinations 4 numbers
# whose sum of squares is equal to the given no.
def printFourSquares(a) :
# loops checking the sum of squares
i = 0
while (i * i <= a) :
j = i
while (j * j <= a) :
k = j
while (k * k <= a) :
l = k
while (l * l <= a) :
# if sum of four squares equals
# the given no.
if (i * i + j * j + k * k + l * l == a) :
# printing the numbers
print ("{} = {}*{} + {}*{} +".
format(a,i,i,j,j), end = " ")
print ("{}*{} + {}*{}".
format(k,k,l,l), end="\n")
l = l + 1
k = k + 1
j = j + 1
i = i + 1
# Driver Code
a = 74
# 74 = 0*0 + 0*0 + 5*5 + 7*7
# 74 = 0*0 + 1*1 + 3*3 + 8*8
# 74 = 0*0 + 3*3 + 4*4 + 7*7
# 74 = 1*1 + 1*1 + 6*6 + 6*6
# 74 = 2*2 + 3*3 + 5*5 + 6*6
printFourSquares(a)
# This code is contributed by Manish Shaw
# (manishshaw1)
C#
// C# program for Lagrange's four square identity
using System;
class GFG
{
// Prints all the possible combinations 4 numbers
// whose sum of squares is equal to the given no.
static void printFourSquares(int a)
{
// loops checking the sum of squares
for (int i = 0; i * i <= a; i++)
{
for (int j = i; j * j <= a; j++)
{
for (int k = j; k * k <= a; k++) {
for (int l = k; l * l <= a; l++)
{
// if sum of four squares equals
// the given no.
if (i * i + j * j + k * k + l * l == a)
{
// printing the numbers
Console.Write( a + " = " + i + "*" + i + " + "
+ j + "*" + j + " + ");
Console.Write( k + "*" + k + " + "
+ l + "*" + l + "\n");
}
}
}
}
}
}
// Driver code
public static void Main()
{
int a = 74;
// 74 = 0*0 + 0*0 + 5*5 + 7*7
// 74 = 0*0 + 1*1 + 3*3 + 8*8
// 74 = 0*0 + 3*3 + 4*4 + 7*7
// 74 = 1*1 + 1*1 + 6*6 + 6*6
// 74 = 2*2 + 3*3 + 5*5 + 6*6
printFourSquares(a);
}
}
// This code is contributed by Smitha
PHP
输出:
74 = 0*0 + 0*0 + 5*5 + 7*7
74 = 0*0 + 1*1 + 3*3 + 8*8
74 = 0*0 + 3*3 + 4*4 + 7*7
74 = 1*1 + 1*1 + 6*6 + 6*6
74 = 2*2 + 3*3 + 5*5 + 6*6