Brahmagupta Fibonacci身份指出,两个数字之积(每个数字是2平方和)可以用2种不同形式表示为2平方和。
数学上
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)
一些示例是:
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
下面是一个程序,用于验证给定两个数字(两个平方之和)的Brahmagupta Fibonacci身份。
C++
// CPP code to verify
// Brahmagupta Fibonacci identity
#include
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);
}
Java
// 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
Python 3
# 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 = i
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
C#
// 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
PHP
Javascript
Representation of a * b as sum of 2 squares:
2^2 + 11^2 = 125
5^2 + 10^2 = 125