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

i∗i * ii <= a;a; a;i++) { for ( j=j = j=i; j∗j * jj <= a;a; a;j++) { for ($k = j;j; j;k * k<=k <= k<=a; $k++) { for ($l = k;k; k;l * l<=l <= l<=a; $l++) { // if sum of four squares equals // the given no. if ($i * i+i + i+j * j+j + j+k * $k + l∗l * ll == $a) { // printing the numbers echo a,"=",a , " = " , a,"=",i , "*" ,$i, " + " , j,"∗",j , "*" , j,"",j , " + "; echo k,"∗",k , "*" , k,"",k , " + ", l,"∗",l , "*" , l,"",l , "\n"; } } } } } } // 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 ajit. ?>

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)