加载中…
个人资料
小牛
小牛
  • 博客等级:
  • 博客积分:0
  • 博客访问:6,476
  • 关注人气:77
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2023-10-01 13:05:38)
标签:

教育

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

 

 

 整数勾股弦数据库的建立   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     C                     

27   364   365   1     1           27   364   365        仅此三个

27   120   123   3     3            9    40    41  

27    36    45   9     9            3     4     5

  

  A=84  结果如下: 

  A     B      C     K   公约数   独立 A     B      C              

84   1763   1765    2     1          84   1763   1765 

84    880    884    4     4          21    220    221  

84    585    591    6     3          28    195    197 

84    437    445    8     1          84    437    445  

84    288    300   12    12           7     24     25  

84    245    259   14     7          12     35     37  

84    187    205   18     1          84    187    205  

84    135    159   24     3          28     45     53  

84    112    140   28    28           3      4      5  

待续


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有