【题解】T156527 直角三角形

题目链接:T156527 直角三角形

审题

根据勾股定理, a 2 + b 2 = = c 2 a^2 + b^2 == c^2 a2+b2==c2

当然,由于勾股定理不在小学数学考查的的范围内,我们需要对勾股定理进行一些证明,让小学生能够轻松地做出此题。

勾股定理的证明

赵爽弦图

【题解】T156527 直角三角形_第1张图片

这个↑,就是传说中的“赵爽弦图”。

赵爽(?-?),一名婴,字君卿,是中国在三国时期吴国的数学家。生卒年不详,是否生活在三国时代其实也受质疑,著有《周髀算经注》,即对《周髀算经》的详细注释。

“勾股各自乘,并之,为弦实。开方除之,即弦。”

——赵爽《勾股圆方图说》

“按弦图,又可以勾股相乘为朱实二,倍之为朱实四,以勾股之差自相乘为中黄实,加差实,亦成弦实。”

——赵爽《勾股圆方图说》

语文好的同学,可以直接看下一个证明方法了。

在这张途中,正方形ABDE以弦为边长,由4个相等的直角三角形再加上中间的那个小正方形组成。

不妨设 A E = B F = C G = D H = a AE = BF = CG = DH = a AE=BF=CG=DH=a B E = C F = D G = A H = b BE = CF = DG = AH = b BE=CF=DG=AH=b A B = B C = C D = D A = c AB = BC = CD = DA = c AB=BC=CD=DA=c

那么,

S 正方形 E F G H = ( b − a ) 2 S_{\text {正方形}EFGH} = (b - a)^2 S正方形EFGH=(ba)2

S △ A E B = S △ B F C = S △ C G D = S △ D H A = a × b 2 S_{\text {△}AEB} = S_{\text {△}BFC} = S_{\text {△}CGD} = S_{\text {△}DHA} = \frac {a \times b} {2} SAEB=SBFC=SCGD=SDHA=2a×b

4 S △ = 2 a b 4S_{\text {△}} = 2ab 4S=2ab

∴ S 正方形 A B C D = 4 S △ + S 正方形 E F G H = ( b − a ) 2 + 2 a b = a 2 − 2 a b + b 2 + 2 a b = a 2 + b 2 ∴S_{\text{正方形}ABCD} = 4S_{\text {△}} + S_{\text{正方形}EFGH} = (b - a)^2 + 2ab = a^2 - 2ab + b^2 + 2ab = a^2 + b^2 S正方形ABCD=4S+S正方形EFGH=(ba)2+2ab=a22ab+b2+2ab=a2+b2

∵ S 正方形 A B C D = c 2 \text{∵} S_{\text{正方形}ABCD} = c^2 S正方形ABCD=c2

∴ a 2 + b 2 = c 2 \text{∴}a^2 + b^2 = c^2 a2+b2=c2

证毕。

青朱出入图

【题解】T156527 直角三角形_第2张图片

没错就是这个,上面那张图多看几遍就会恍然大悟。

刘徽(约225年-约295年),山东淄博淄川人,三国时代魏国数学家,梁敬王刘定国之孙菑乡侯刘逢喜的后裔。

青朱出入图,是东汉末年数学家刘徽根据“割补术”运用数形关系证明勾股定理的几何证明法,其法富有东方智慧(?莫名想起这个),特色鲜明、通俗易懂。

利用相似三角形的证法

有许多勾股定理的证明方式,都是基于相似三角形中两边长的比例。

A B C {\displaystyle ABC} ABC 为一直角三角形,直角于 ∠ C {\displaystyle \angle C} C(看右图)。从点 C {\displaystyle C} C 画上三角形的高,并将此高与 A B ‾ {\displaystyle {\overline {AB}}} AB 的交叉点称之为 H {\displaystyle H} H。此新 △ A C H {\displaystyle \bigtriangleup ACH} ACH 和原本的 △ A B C {\displaystyle \bigtriangleup ABC} ABC 相似,因为在两个三角形中都有一个直角(这又是由于“高”的定义),而两个三角形都有 A {\displaystyle A} A 这个共同角,由此可知第三只角都是相等的。同样道理, △ C B H {\displaystyle \bigtriangleup CBH} CBH △ A B C {\displaystyle \bigtriangleup ABC} ABC 也是相似的。这些相似关系衍生出以下的比率关系:

因为

B C ‾ = a , A C ‾ = b , a n d A B ‾ = c ,  ⁣ {\displaystyle {\overline {BC}}=a,{\overline {AC}}=b, {\rm and} {\overline {AB}}=c,\!} BC=a,AC=b,andAB=c,

所以

a c = H B ‾ a a n d b c = A H ‾ b .   {\displaystyle {\frac {a}{c}}={\frac {\overline {HB}}{a}} {\rm and} {\frac {b}{c}}={\frac {\overline {AH}}{b}}.\,} ca=aHBandcb=bAH.

可以写成

a 2 = c × H B ‾ a n d b 2 = c × A H ‾ .   {\displaystyle a^{2}=c\times {\overline {HB}} {\rm and} b^{2}=c\times {\overline {AH}}.\,} a2=c×HBandb2=c×AH.

综合这两个方程,我们得到

a 2 + b 2 = c × H B ‾ + c × A H ‾ = c × ( H B ‾ + A H ‾ ) = c 2 .   ⁣ {\displaystyle a^{2}+b^{2}=c\times {\overline {HB}}+c\times {\overline {AH}}=c\times ({\overline {HB}}+{\overline {AH}})=c^{2}.\,\!} a2+b2=c×HB+c×AH=c×(HB+AH)=c2.

换句话说:

a 2 + b 2 = c 2 .   ⁣ a 2 + b 2 = c 2 .   ⁣ {\displaystyle a^{2}+b^{2}=c^{2}.\,\!}a^2+b^2=c^2.\,\! a2+b2=c2.a2+b2=c2.

欧几里得的证法

【题解】T156527 直角三角形_第3张图片

在定理的证明中,我们需要如下四个辅助定理:

  • SAS(如果两个三角形有两组对应边和这两组边所夹的角相等,则两三角形全等。)

  • 三角形面积是任一同底同高之平行四边形面积的一半。

  • 任意一个正方形的面积等于其二边长的乘积。

  • 任意一个矩形的面积等于其二边长的乘积。

其中3、4两个定理小学已经讲过了,这里不再赘述。

为了证明勾股定理,我们首先证明SAS。

由几何直观可得:如果两个三角形有两组对应边和这两组边所夹的角相等,则两三角形全等。

证毕。

好吧,SAS是一个公理(依据人类理性的不证自明的基本事实<来自百度百科>)。

下面是欧几里得对于勾股定理的证明。

  1. △ A B C {\displaystyle \triangle ABC} ABC 为一直角三角形,其直角为 ∠ C A B {\displaystyle \angle CAB} CAB
  2. 其边为 B C ‾ {\displaystyle {\overline {BC}}} BC A B ‾ {\displaystyle {\overline {AB}}} AB、和 C A ‾ {\displaystyle {\overline {CA}}} CA,依序绘成四方形 C B D E {\displaystyle CBDE} CBDE B A G F {\displaystyle BAGF} BAGF A C I H {\displaystyle ACIH} ACIH
  3. 画出过点 A {\displaystyle A} A B D ‾ {\displaystyle {\overline {BD}}} BD C E ‾ {\displaystyle {\overline {CE}}} CE的平行线。此线将分别与 B C ‾ {\displaystyle {\overline {BC}}} BC D E ‾ {\displaystyle {\overline {DE}}} DE 直角相交于 K {\displaystyle K} K L {\displaystyle L} L
  4. 分别连接 C F ‾ {\displaystyle {\overline {CF}}} CF A D ‾ {\displaystyle {\overline {AD}}} AD,形成两个三角形 B C F {\displaystyle BCF} BCF B D A {\displaystyle BDA} BDA
  5. ∠ C A B {\displaystyle \angle CAB} CAB ∠ B A G {\displaystyle \angle BAG} BAG 都是直角,因此 C {\displaystyle C} C A {\displaystyle A} A G {\displaystyle G} G都是共线的,同理可证 B {\displaystyle B} B A {\displaystyle A} A H {\displaystyle H} H共线。
  6. ∠ C B D {\displaystyle \angle CBD} CBD ∠ F B A {\displaystyle \angle FBA} FBA 皆为直角,所以 ∠ A B D {\displaystyle \angle ABD} ABD 相等于 ∠ F B C {\displaystyle \angle FBC} FBC
  7. 因为 A B ‾ {\displaystyle {\overline {AB}}} AB B D ‾ {\displaystyle {\overline {BD}}} BD 分别等于 F B ‾ {\displaystyle {\overline {FB}}} FB B C ‾ {\displaystyle {\overline {BC}}} BC,所以 △ A B D {\displaystyle \triangle ABD} ABD 必须全等于 △ F B C {\displaystyle \triangle FBC} FBC
  8. 因为 A {\displaystyle A} A K {\displaystyle K} K L {\displaystyle L} L 在同一直线上,所以四方形 B D L K {\displaystyle BDLK} BDLK 必须二倍面积于 △ A B D {\displaystyle \triangle ABD} ABD
  9. 因为 C {\displaystyle C} C A {\displaystyle A} A G {\displaystyle G} G 在同一直线上,所以正方形 B A G F {\displaystyle BAGF} BAGF 必须二倍面积于 △ F B C {\displaystyle \triangle FBC} FBC
  10. 因此四边形 B D L K {\displaystyle BDLK} BDLK 必须和 B A G F {\displaystyle BAGF} BAGF 有相同的面积= A B ‾ 2 {\displaystyle {\overline {AB}}^{2}} AB2
  11. 同理可证,四边形 C K L E {\displaystyle CKLE} CKLE 必须有相同的面积 A C I H = A C ‾ 2 {\displaystyle ACIH={\overline {AC}}^{2}} ACIH=AC2
  12. 把这两个结果相加, A B ‾ 2 + A C ‾ 2 = B D ‾ × B K ‾ + K L ‾ × K C ‾ {\displaystyle {\overline {AB}}^{2}+{\overline {AC}}^{2}={\overline {BD}}\times {\overline {BK}}+{\overline {KL}}\times {\overline {KC}}} AB2+AC2=BD×BK+KL×KC
  13. 由于 B D ‾ = K L ‾ B D ‾ = K L ‾ , B D ‾ × B K ‾ + K L ‾ × K C ‾ = B D ‾ ( B K ‾ + K C ‾ ) = B D ‾ × B C ‾ {\displaystyle {\overline {BD}}={\overline {KL}}}{\displaystyle {\overline {BD}}={\overline {KL}}},{\displaystyle {\overline {BD}}\times {\overline {BK}}+{\overline {KL}}\times {\overline {KC}}={\overline {BD}}\left({\overline {BK}}+{\overline {KC}}\right)={\overline {BD}}\times {\overline {BC}}} BD=KLBD=KLBD×BK+KL×KC=BD(BK+KC)=BD×BC
  14. 由于 C B D E {\displaystyle CBDE} CBDE 是个正方形,因此 A B ‾ 2 + A C ‾ 2 = B C ‾ 2 A B ‾ 2 + A C ‾ 2 = B C ‾ 2 {\displaystyle {\overline {AB}}^{2}+{\overline {AC}}^{2}={\overline {BC}}^{2}}{\displaystyle {\overline {AB}}^{2}+{\overline {AC}}^{2}={\overline {BC}}^{2}} AB2+AC2=BC2AB2+AC2=BC2

欧几里得(希腊语:Ευκλειδης,古希腊语:Εὐκλείδης,前325年-前265年),有时被称为亚历山大里亚的欧几里得,以便区别于墨伽拉的欧几里得。希腊化时代的数学家,被称为**“几何学之父”。他活跃于托勒密一世时期的亚历山大里亚,也是亚历山太学派的成员。他在著作《几何原本》**中提出五大公设,成为欧洲数学的基础。欧几里得也写过一些关于透视、圆锥曲线、球面几何学及数论的作品。欧几里得几何被广泛的认为是数学领域的经典之作。

图形重新排列证法

【题解】T156527 直角三角形_第4张图片

此证明以图形重新排列证明。两个大正方形的面积皆为 ( a + b ) 2 {\displaystyle (a+b)^{2}} (a+b)2。把四个相等的三角形移除后,左方余下面积为 a 2 + b 2 {\displaystyle a^{2}+b^{2}} a2+b2,右方余下面积为 c 2 {\displaystyle c^{2}} c2,两者相等。证毕。

总统证法

【题解】T156527 直角三角形_第5张图片

证明: ∵ S 梯形 A B C D = 1 2 ( a + b ) 2 = 1 2 ( a 2 + 2 a b + b 2 ) \text{∵}S_{\text {梯形}ABCD} = \frac {1} {2} (a + b)^2 = \frac {1} {2} (a^2 + 2ab + b^2) S梯形ABCD=21(a+b)2=21(a2+2ab+b2)

∵ S 梯形 A B C D = S △ A E D + S △ E B C + S △ D E C = 1 2 a b + 1 2 b a + 1 2 c = 1 2 ( 2 a b + c 2 ) \text{∵}S_{\text {梯形}ABCD} = S_{\text{△}AED} + S_{\text{△}EBC} + S_{\text{△}DEC} = \frac {1} {2}ab + \frac {1} {2}ba + \frac {1} {2}c = \frac {1} {2}(2ab + c^2) S梯形ABCD=SAED+SEBC+SDEC=21ab+21ba+21c=21(2ab+c2)

∴ c 2 = a 2 + b 2 \text {∴}c^2 = a^2 + b^2 c2=a2+b2

证毕。

詹姆斯·艾伯拉姆·伽菲尔德(英语:James Abram Garfield,1831年11月19日—1881年9月19日),美国政治家数学家,生于俄亥俄州。美国共和党人。南北战争期间加入北方军队,与南方奴隶制军队作战,拥有少将军衔。1880年加菲尔德当选为第20任总统,他是美国首位具有神职人员身份的总统。就职仅4个月即遭暗杀,是美国第二位被暗杀的总统。他在数学方面的贡献主要是在勾股定理的证明方面的新成就,他也是美国历史上唯一一位数学家出身的总统。他的第一夫人是卢克丽霞·鲁道夫,育有五子二女。

代码

相信你们看完了以上的证明已经对勾股定理有了初步的了解。那么,现在我们就可以开始写代码了:

#include 
using namespace std;

int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i * i + j * j == n * n) {
        cout << i << ' ' << j << endl;
        return 0;
      }
}

这份已经是AC的代码了,如果让它运行得更快一点的话,可以稍稍地做一点优化。

为了让 a a a,也就是 i i i 最小, a a a 肯定小于 b b b。所以可以让 j j j i i i 开始循环。代码如下:

#include 
using namespace std;

int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i * i + j * j == n * n) {
        cout << i << ' ' << j << endl;
        return 0;
      }
}

第一份代码运行了121ms,第二份运行了113ms。所以,我们要想办法优化自己的程序,使自己的程序加快不到10ms。

评价

此题涉及如此多的数学知识,建议至少评蓝。

你可能感兴趣的:(c++)