整数勾股弦新公式的发现及数据库的建立4
2023-10-01 13:05阅读:
整数勾股弦新公式的发现及数据库的建立
三 整数勾股弦数据库的建立
4
如果说,A2+B2=C2是任意数(含无理数)的勾股定理,那末,整数勾股定理就有奇、偶两个公式组成。一个公式适用于A=奇、K=奇,一个公式适用于A=偶、K=偶。可见,要产生独立ABC,弦股之差的K不是随便定的,而是有规矩的,即:
勾A是奇数,K只能是奇数,並且仅仅是奇数的平方(如K=12、32、52
…132、152 …)。
勾A是偶数,K只能是偶数,並且仅仅是整数平方的2倍(如K=2*12
=2、 2*22 =8、2*32
=18、
2*42 =32 、2*52
=50
… )。
这种规律,已体现在整数勾股定理的两个公式中,可以用手工计算。但是一个个的算,有点烦,若要把派生ABC约分为独立ABC,更烦。在电算时代,手工计算已经跟不上形势。为此,我编了两个VB程序,可以快速的构建成批整数勾股弦,且同时得到派生与独立的A
B
C。更有意义的是,这两个VB程序,实际上是整数勾股弦的数据库。
编程原理:根据A2+B2=C2,推演一个给出A与K,去求B、C的公式。
设: 给出整数A
(A的取值一个不漏),与定差K,(K=C-B,给出K=1、2、3、4…,则C=B+K)。
当C=B+K时,由
B2=C2-A2 →
B2=(B+K)2-A2=B2+2BK+K2-A2
→ B2= B2+2BK+K2-A2 →
2KB=A2-K2 →
B=(A2-K2)/2K
最终为:
给出A,K,则
B=(A2-K2)/2K 、C=B+K
…
(a)
一
输入勾A,自动选择定差K的VB程序
这个程序实际上可视与所有勾A相对应的整数勾股弦数据库
Private Sub Form_Click():
Form1.Width = 11520: Form1.Height = 15360
说
明
Dim A(20): Dim B(20):
Dim C(20):
Dim Y(20)
E =
InputBox('输入勾A,即E=')
输入勾A
For K = 1 To 1000
自动选择定差K
F = (E * E - K * K) / 2 / K
股
G = F + K
弦
H = Int(F)
股取整
If (F = 0) Then GoTo W
股=0时便退出
If (H <> F) Then GoTo S
股不是整数便退出
Print
If (H = F) Then Print Spc(4); 'A='; E; F; G; K
股是整数便打印
A(1) = E
并前去约分
A(2) = F
A(3) = G
For I = 1 To 3
B(I) = A(I)
Next I
For I = 1 To 3
Y(I) = A(I)
Next I
For I = 1 To 2
n1 = A(1)
m1 = A(2)
If m1 > n1 Then
m = m1: N = n1
Else
m = n1: N = m1
End If
Do
R = m Mod N
辗转相除
If R = 0 Then Exit Do
m = N
N = R
Loop
Print Spc(4); n1; '
与 '; m1; '
的最大公约数X ='; N
打印最大公约数N
A(1) = N
A(2) = A(I + 2)
Next I
For I = 1 To 3
C(I) = B(I) / N
Next I
Print Spc(4); '独立 '; C(1); C(2);
C(3)
打印独立勾股弦
S:
Next K
W:
Print
Print Spc(4); '成功'
End Sub
例
勾A=3
结果如下:
A
B C
K
公约数 独立 A
B C
注
3 4
5 1
1
3
4 5
仅此一个
例
勾A=27 结果如下:
A
B C
K
公约数
独立 A
B