Lagrange's four square theorem (original) (raw)
Last Updated : 11 Jul, 2025
Lagrange's Four Square Theorem states that every natural number can be written as sum of squares of four non negative integers.
For eg. 1 = 0^2 + 0^2 + 0^2 +1^2
Similarly 2 = 0^2 + 0^2 + 1^2 +1^2
Similarly for any
n\in N, n = a^2 + b^2 + c^2 + d^2 where \ a, b, c, d, \in N \cup \{0\}
The above identity may be derived from Euler's four square identity: which says we can write a product of 2 numbers (which can be written as sum of 4 squares) as the sum of 4 squares.
C++ `
// CPP program for Lagrange's four square identity #include <bits/stdc++.h> 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 = 00 + 00 + 55 + 77 // 74 = 00 + 11 + 33 + 88 // 74 = 00 + 33 + 44 + 77 // 74 = 11 + 11 + 66 + 66 // 74 = 22 + 33 + 55 + 66
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 = 00 + 00 + 55 + 77 // 74 = 00 + 11 + 33 + 88 // 74 = 00 + 33 + 44 + 77 // 74 = 11 + 11 + 66 + 66 // 74 = 22 + 33 + 55 + 66
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 = 00 + 00 + 55 + 77
74 = 00 + 11 + 33 + 88
74 = 00 + 33 + 44 + 77
74 = 11 + 11 + 66 + 66
74 = 22 + 33 + 55 + 66
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 = 00 + 00 + 55 + 77 // 74 = 00 + 11 + 33 + 88 // 74 = 00 + 33 + 44 + 77 // 74 = 11 + 11 + 66 + 66 // 74 = 22 + 33 + 55 + 66
printFourSquares(a);} } // This code is contributed by Smitha
PHP
JavaScript
`
Output:
74 = 00 + 00 + 55 + 77 74 = 00 + 11 + 33 + 88 74 = 00 + 33 + 44 + 77 74 = 11 + 11 + 66 + 66 74 = 22 + 33 + 55 + 66
Time complexity : O(a2)
Auxiliary Space : O(1)