# Lagrange’s four square theorem

Lagrange’s Four Square Theorem states that every natural number can be written as sum of squares of four non negative integers.

For eg. Similarly Similarly for any 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  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

 

Output:

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


My Personal Notes arrow_drop_up I am an aspiring and passionate coder who wants to find out new algorithms to unsolved problems My thoughts are communal and I can understand different perspectives and expressions by various people FIELDS OF INTEREST Cryptography Algorithms Graph Theory Optimization Competitive Programming and Math

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.