新浪博客

整数勾股弦新公式的发现及数据库的建立4

2023-10-01 13:05阅读:
整数勾股弦新公式的发现及数据库的建立


整数勾股弦数据库的建立 4

如果说,A2+B2=C2是任意数(含无理数)的勾股定理,那末,整数勾股定理就有奇、偶两个公式组成。一个公式适用于A=奇、K=奇,一个公式适用于A=偶、K=偶。可见,要产生独立ABC,弦股之差的K不是随便定的,而是有规矩的,即:
A是奇数,K只能是奇数,並且仅仅是奇数的平方(K=123252 …132152 …)
A是偶数,K只能是偶数,並且仅仅是整数平方的2(K=2*12 =22*22 =82*32 =18
2*42 =32 2*52 =50
… )。
这种规律,已体现在整数勾股定理的两个公式中,可以用手工计算。但是一个个的算,有点烦,若要把派生ABC约分为独立ABC,更烦。在电算时代,手工计算已经跟不上形势。为此,我编了两个VB程序,可以快速的构建成批整数勾股弦,且同时得到派生与独立的A B C。更有意义的是,这两个VB程序,实际上是整数勾股弦的数据库。

编程原理:根据A2+B2=C2,推演一个给出AK,去求BC的公式。
: 给出整数A (A的取值一个不漏),与定差K(K=C-B,给出K=1234…,则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 最终为:
给出AK,则 B=(A2-K2)/2KC=B+K (a)

输入勾A,自动选择定差KVB程序
这个程序实际上可视与所有勾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

我的更多文章

下载客户端阅读体验更佳

APP专享