📜  拉格朗日的四平方定理

📅  最后修改于: 2021-05-04 11:12:44             🧑  作者: Mango

拉格朗日的四平方定理指出,每个自然数都可以写成四个非负整数的平方和。

上面的标识可以从欧拉的四个平方标识得出表示我们可以写一个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