Brahmagupta Fibonacci Identity

Brahmagupta Fibonacci identity states that the product of two numbers each of which is a sum of 2 squares can be represented as sum of 2 squares in 2 different forms.

Mathematically,

If a = p^2 + q^2 and b = r^2 + s^2
then a * b can be written in two
different forms:
= (p^2 + q^2) * (r^2 + s^2)
= (pr – qs)^2 + (ps + qr)^2 …………(1)
= (pr + qs)^2 + (ps – qr)^2 …………(2)



Some Examples are:

a = 5(= 1^2 + 2^2)
b = 25(= 3^2 + 4^2)
a*b = 125
Representation of a * b as sum of 2 squares:
2^2 + 11^2 = 125
5^2 + 10^2 = 125
em>Explanations:
a = 5 and b = 25 each can be expressed as a sum of 2 squares and their product a*b which is 125 can be expressed as sum of 2 squares in two different forms. This is according to
the Brahmagupta Fibonacci Identity and satisfies the identity condition.

a = 13(= 2^2 + 3^2)
b = 41(= 4^2 + 5^2)
a*b = 533
Representation of a * b as sum of 2 squares:
2^2 + 23^2 = 533
7^2 + 22^2 = 533

a = 85(= 6^2 + 7^2)
b = 41(= 4^2 + 5^2)
a*b = 3485
Representation of a * b as sum of 2 squares:
2^2 + 59^2 = 3485
11^2 + 58^2 = 3485
26^2 + 53^2 = 3485
37^2 + 46^2 = 3485

Below is a program to verify Brahmagupta Fibonacci identity for given two numbers which are sums of two squares.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP code to verify 
// Brahmagupta Fibonacci identity
#include <bits/stdc++.h>
using namespace std;
  
void find_sum_of_two_squares(int a, 
                             int b)
{
    int ab = a*b;
  
    // represent the product 
    // as sum of 2 squares
    for (int i = 0; i * i <= ab; i++) 
    {
        for (int j = i; i * i + 
                        j * j <= ab; j++) 
        {
  
            // check identity criteria 
            if (i * i + j * j == ab) 
                cout << i << "^2 + " << j 
                     << "^2 = " << ab << "\n";
        }
    }
}
  
// Driver code
int main()
{
    // 1^2 + 2^2
    int a = 1 * 1 + 2 * 2; 
      
    // 3^2 + 4^2
    int b = 3 * 3 + 4 * 4; 
  
    cout << "Representation of a * b as sum"
            " of 2 squares:\n";
  
    // express product of sum of 2 sqaures
    // as sum of (sum of 2 squares)
    find_sum_of_two_squares(a, b);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to verify Brahmagupta
// Fibonacci identity
  
class GFG 
{
    static void find_sum_of_two_squares(int a, 
                                        int b)
{
    int ab = a * b;
  
    // represent the product 
    // as sum of 2 squares
    for (int i = 0; i * i <= ab; i++)
    {
        for (int j = i; i * i + 
                        j * j <= ab; j++) 
        {
            // check identity criteria 
            if (i * i + j * j == ab) 
                System.out.println(i + "^2 + "
                                   j +"^2 = " + ab);
        }
    }
}
  
// Driver code
public static void main(String[] args)
{
    // 1^2 + 2^2
    int a = 1 * 1 + 2 * 2
      
    // 3^2 + 4^2
    int b = 3 * 3 + 4 * 4
  
    System.out.println("Representation of a * b "
                        "as sum of 2 squares:");
  
    // express product of sum 
    // of 2 sqaures as sum of
    // (sum of 2 squares)
    find_sum_of_two_squares(a, b);
}
}
  
// This code is contributed 
// by Smitha Dinesh Semwal

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 code to verify
# Brahmagupta Fibonacci identity
  
def find_sum_of_two_squares(a, b):
  
    ab = a * b
  
    # represent the product
    # as sum of 2 squares
    i=0;
    while(i * i <= ab):
        j =
        while(i * i + j * j <= ab): 
  
            # check identity criteria 
            if (i * i + j * j == ab): 
                print(i,"^2 + ",j,"^2 = ",ab)
            j += 1
        i += 1
      
# Driver code
a = 1 * 1 + 2 * 2 # 1^2 + 2^2
b = 3 * 3 + 4 * 4 # 3^2 + 4^2
  
print("Representation of a * b as sum"
                     " of 2 squares:")
  
# express product of sum of 2 sqaures
# as sum of (sum of 2 squares)
find_sum_of_two_squares(a, b)
  
# This code is contributed by
# Smitha Dinesh Semwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to verify Brahmagupta
// Fibonacci identity
using System;
  
class GFG 
{
    static void find_sum_of_two_squares(int a, 
                                        int b)
    {
    int ab = a * b;
  
    // represent the product 
    // as sum of 2 squares
    for (int i = 0; i * i <= ab; i++)
    {
        for (int j = i; i * i + 
                        j * j <= ab; j++) 
        {
            // check identity criteria 
            if (i * i + j * j == ab) 
                Console.Write(i + "^2 + " + j +
                          "^2 = " + ab + "\n");
        }
    }
}
  
// Driver code
public static void Main()
{
    // 1^2 + 2^2
    int a = 1 * 1 + 2 * 2; 
      
    // 3^2 + 4^2
    int b = 3 * 3 + 4 * 4; 
  
    Console.Write("Representation of a * b " +
                   "as sum of 2 squares:\n");
  
    // express product of sum of 
    // 2 sqaures as sum of (sum of
    // 2 squares)
    find_sum_of_two_squares(a, b);
}
}
  
// This code is contributed 
// by Smitha Dinesh Semwal

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP code to verify 
// Brahmagupta Fibonacci identity
  
function find_sum_of_two_squares($a, $b)
{
    $ab = $a * $b;
  
    // represent the product 
    // as sum of 2 squares
    for ($i = 0; $i * $i <= $ab; $i++) 
    {
        for ($j = $i; $i * $i
                      $j * $j <= $ab; $j++) 
        {
  
            // check identity criteria 
            if ($i * $i + $j * $j == $ab
                echo $i ,"^2 + ", $j ,
                     "^2 = " , $ab ,"\n";
        }
    }
}
  
// Driver code
// 1^2 + 2^2
$a = 1 * 1 + 2 * 2; 
  
// 3^2 + 4^2
$b = 3 * 3 + 4 * 4; 
  
echo "Representation of a * b ".
     "as sum of 2 squares:\n";
  
// express product of sum of 
// 2 sqaures as sum of (sum 
// of 2 squares)
find_sum_of_two_squares($a, $b);
  
// This code is contributed by aj_36
?>

chevron_right


Output :

Representation of a * b as sum of 2 squares:
2^2 + 11^2 = 125
5^2 + 10^2 = 125


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.