ACM数论基础之扩展欧几里德详细证明

ACM数论基础之扩展欧几里德详细证明
ACM数论基础之扩展欧几里德详细证明

ACM数论基础之扩展欧几里德算法

欧几里德算法概述:

欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:

gcd函数就是用来求(a,b)的最大公约数的。

gcd函数的基本性质:

gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)

欧几里得算法的公式表述

gcd(a,b)=gcd(b,a mod b)

证明:a可以表示成a = kb + r,则r = a mod b

假设d是a,b的一个公约数,则有

d|a, d|b,而r = a - kb,因此d|r

因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则

d | b , d |r ,但是a = kb +r

因此d也是(a,b)的公约数

因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证

欧几里德算法的C++语言描述

intGcd(int a, int b)

{

if(b == 0)

return a;

returnGcd(b, a % b);

}

当然你也可以写成迭代形式:

intGcd(int a, int b)

{

while(b != 0)

{

int r = b;

b = a % b;

a = r;

}

return a;

}

扩展欧几里德定理

对于不完全为0 的非负整数a,b,gcd(a,b)表示a,b 的最大公约数,必然存在整数对x,y ,使得gcd(a,b)=ax+by。

c++语言实现

#include

using namespace std;

intx,y,q;

voidextend_Eulid(inta,int b)

{

if(b == 0)

{

x = 1;y = 0;q = a;

}

else

{

extend_Eulid(b,a%b);

int temp = x;

x = y;

y = temp - a/b*y;

}

}

int main()

{

inta,b;

cin>>a>>b;

if(a < b)

swap(a,b);

extend_Eulid(a,b);

printf("%d=(%d)*%d+(%d)*%d\n",q,x,a,y,b);

return 0;

}

求解x,y的方法的理解

设a>b。

1,显然当b=0,gcd(a,b)=a。此时x=1,y=0;

2,ab<>0 时

设ax1+by1=gcd(a,b);

bx2+(a mod b)y2=gcd(b,a mod b);

根据朴素的欧几里德原理有gcd(a,b)=gcd(b,a mod b);

则:ax1+by1=bx2+(a mod b)y2;

即:ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b)*by2;

根据恒等定理得:x1=y2; y1=x2-(a/b)*y2;

这样我们就得到了求解x1,y1 的方法:x1,y1 的值基于x2,y2.

上面的思想是以递归定义的,因为gcd不断的递归求解一定会有个时候b=0,所以递归可以

结束。

扩展欧几里德算法

扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+by = Gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现:

intexGcd(int a, int b, int&x, int&y)

{

if(b == 0)

{

x = 1;

y = 0;

return a; ---很难找出一个这么实现的价值,因为扩展欧几里得还有更大的用途;个人认为定义全局数组更好,不用return r。

}

int r = exGcd(b, a % b, x, y);

int t = x;

x = y;

y = t - a / b * y;

return r;

}

把这个实现和Gcd的递归实现相比,发现多了下面的x,y赋值过程,这就是扩展欧几里德算法的精髓。

可以这样思考:

对于a' = b, b' = a % b 而言,我们求得x, y使得a'x + b'y = Gcd(a', b')

由于b' = a % b = a - a / b * b (注:这里的/是程序设计语言中的除法)

那么可以得到:

a'x + b'y = Gcd(a', b') ===>

bx + (a - a / b * b)y = Gcd(a', b') = Gcd(a, b) ===>

ay +b(x - a / b*y) = Gcd(a, b)

因此对于a和b而言,他们的相对应的p,q分别是y和(x-a/b*y)

使用扩展欧几里德算法解决不定方程的办法

对于不定整数方程pa+qb=c,若c mod Gcd(a, b)=0,则该方程存在整数解,否则不存在整数解。

上面已经列出找一个整数解的方法,在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后,/*p * a+q * b = Gcd(a, b)的其他整数解满足:

p = p0 + b/Gcd(a, b) * t

q = q0 - a/Gcd(a, b) * t(其中t为任意整数)

至于pa+qb=c的整数解,只需将p * a+q * b = Gcd(a, b)的每个解乘上c/Gcd(a, b) 即可

在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后,应该是

得到p * a+q * b = c的一组解p1 = p0*(c/Gcd(a,b)),q1 = q0*(c/Gcd(a,b)),p * a+q * b = c的其他整数解满足:

p = p1 + b/Gcd(a, b) * t

q = q1 - a/Gcd(a, b) * t(其中t为任意整数)

p 、q就是p * a+q * b = c的所有整数解。

编程时exgcd更多用于求解“中国余数定理”相关知识举个例子比如n除以5余2 除以13余3 那么n最小是多少,所有的n满足什么条件?

n(min)=42

n=42+k*65

欧几里德算法的扩展

扩展欧几里德算法不但能计算(a,b)的最大公约数,而且能计算a模b及b模a的乘法逆元,用C语言描述如下:

intgcd(inta,intb,int&ar,int&br)

{

int x1,x2,x3;

int y1,y2,y3;

int t1,t2,t3;

if(0 == a)

{//有一个数为0,就不存在乘法逆元

ar = 0;

br = 0 ;

return b;

}

if(0 == b)

{

ar = 0;

br = 0 ;

return a;

}

x1 = 1;

x2 = 0;

x3 = a;

y1 = 0;

y2 = 1;

y3 = b;

int k;

for( t3 = x3 % y3 ; t3 != 0 ; t3 = x3 % y3)

{

k = x3 / y3;

t2 = x2 - k * y2;

t1 = x1 - k * y1;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

if( y3 == 1)

{

//有乘法逆元

ar = y2;

br = x1;

return 1;

}

else

{

//公约数不为1,无乘法逆元

ar = 0;

br = 0;

return y3;

}

}

扩展欧几里德算法对于最大公约数的计算和普通欧几里德算法是一致的。计算乘法逆元则显得很难明白。我想了半个小时才想出证明他的方法。

首先重复拙作整除中的一个论断:

如果gcd(a,b)=d,则存在m,n,使得d = ma + nb,称呼这种关系为a、b组合整数d,m,n称为组合系数。当d=1时,有ma + nb = 1 ,此时可以看出m是a模b的乘法逆元,n是b模a的乘法逆元。

为了证明上面的结论,我们把上述计算中xi、yi看成ti的迭代初始值,考察一组数(t1,t2,t3),用归纳法证明:当通过扩展欧几里德算法计算后,每一行都满足a×t1 + b×t2 = t3 第一行:1 × a + 0 × b = a成立

第二行:0 × a + 1 × b = b成立

假设前k行都成立,考察第k+1行

对于k-1行和k行有

t1(k-1) t2(k-1) t3(k-1)

t1(k) t2(k) t3(k)

分别满足:

t1(k-1) × a + t2(k-1) × b = t3(k-1)

t1(k) × a + t2(k) × b = t3(k)

根据扩展欧几里德算法,假设t3(k-1) = j t3(k) + r

则:

t3(k+1) = r

t2(k+1) = t2(k-1) - j × t2(k)

t1(k+1) = t1(k-1) - j × t1(k)

t1(k+1) × a + t2(k+1) × b

=t1(k-1) × a - j × t1(k) × a +

t2(k-1) × b - j × t2(k) × b

= t3(k-1) - j t3(k) = r

= t3(k+1)

得证

因此,当最终t3迭代计算到1时,有t1× a + t2 × b = 1,显然,t1是a模b的乘法逆元,t2是b模a的乘法逆元。

c语言实现

//扩展的欧几里德算法求乘法逆元

#include

intExtendedEuclid( intf,int d ,int *result);

int main()

{

intx,y,z;

z = 0;

printf("输入两个数:\n");

scanf("%d%d",&x,&y);

if(ExtendedEuclid(x,y,&z))

printf("%d和%d互素,乘法的逆元是:%d\n",x,y,z);

else

printf("%d和%d不互素,最大公约数为:%d\n",x,y,z);

return 0;

}

intExtendedEuclid( intf,int d ,int *result)

{

int x1,x2,x3,y1,y2,y3,t1,t2,t3,q;

x1 = y2 = 1;

x2 = y1 = 0;

x3 = ( f>=d )?f:d;

y3 = ( f>=d )?d:f;

while( 1 )

{

if ( y3 == 0 )

{

*result = x3; /* 两个数不互素则result为两个数的最大公约数,此时返回值为零*/ return 0;

}

if ( y3 == 1 )

{

*result = y2; /* 两个数互素则resutl为其乘法逆元,此时返回值为1 */

return 1;

}

q = x3/y3;

t1 = x1 - q*y1;

t2 = x2 - q*y2;

t3 = x3 - q*y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

}

扩展欧几里德算法

欧几里德算法

欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:

定理:gcd(a,b) = gcd(b,a mod b)

证明:a可以表示成a = kb + r,则r = a mod b

假设d是a,b的一个公约数,则有

d|a, d|b,而r = a - kb,因此d|r

因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则

d | b , d |r ,但是a = kb +r

因此d也是(a,b)的公约数

因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证

欧几里德算法就是根据这个原理来做的,其算法用C++语言描述为:

intGcd(int a, int b)

{

if(b == 0)

return a;

returnGcd(b, a % b);

}

当然你也可以写成迭代形式:

intGcd(int a, int b)

{

while(b != 0)

{

int r = b;

b = a % b;

a = r;

}

return a;

}

本质上都是用的上面那个原理。

补充: 扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(a, b) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现:

intexGcd(int a, int b, int&x, int&y)

{

if(b == 0)

{

x = 1;

y = 0;

return a;

}

int r = exGcd(b, a % b, x, y);

int t = x;

x = y;

y = t - a / b * y;

return r;

}

把这个实现和Gcd的递归实现相比,发现多了下面的x,y赋值过程,这就是扩展欧几里德算法的精髓。

可以这样思考:

对于a' = b, b' = a % b 而言,我们求得x, y使得a'x + b'y = Gcd(a', b')

由于b' = a % b = a - a / b * b (注:这里的/是程序设计语言中的除法)

那么可以得到:

a'x + b'y = Gcd(a', b') ===>

bx + (a - a / b * b)y = Gcd(a', b') = Gcd(a, b) ===>

ay +b(x - a / b*y) = Gcd(a, b)

因此对于a和b而言,他们的相对应的p,q分别是y和(x-a/b*y)

补充:关于使用扩展欧几里德算法解决不定方程的办法

对于不定整数方程pa+qb=c,若c mod Gcd(a, b)=0,则该方程存在整数解,否则不存在整数解。

上面已经列出找一个整数解的方法,在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后,/* p * a+q * b = Gcd(a, b)的其他整数解满足:

p = p0 + b/Gcd(a, b) * t

q = q0 - a/Gcd(a, b) * t(其中t为任意整数)

至于pa+qb=c的整数解,只需将p * a+q * b = Gcd(a, b)的每个解乘上c/Gcd(a, b) 即可。*/有问题

在找到p * a+q * b = Gcd(a, b)的一组解p0,q0后,应该是

得到p * a+q * b = c的一组解p1 = p0*(c/Gcd(a,b)),q1 = q0*(c/Gcd(a,b)),p * a+q * b = c的其他整数解满足:

p = p1 + b/Gcd(a, b) * t

q = q1 - a/Gcd(a, b) * t(其中t为任意整数)

p 、q就是p * a+q * b = c的所有整数解。

“有问题”的一段已经标出

也就是在得出p * a+q * b = Gcd(a, b)的解后是先乘上c/Gcd(a, b)从而导出p * a+q * b = c的其他整数解,

还是先导出p * a+q * b = Gcd(a, b)的其他整数解再乘上c/Gcd(a, b)。

勾股定理16种经典证明方法

勾股定理16种经典证明方法

勾股定理的证明 【证法1】 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 ab c ab b a 2 1 4214222?+=?++, 整理得 2 2 2 c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形, 则每个直角三角形的面积等于ab 2 1. 把这四个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上,B 、F 、C 三点在一条直线上,C 、G 、D 三点在一条直线上. b a b a b a b a c b a c b a c b a c b a c b a c b a

a b a b c c C D ∵ EF = FG =GH =H E = b ―a , ∠HE F = 90o. ∴ EFGH 是一个边长为b ―a 的正方形,它的面积等于()2 a b -. ∴ ()2 2 2 14c a b ab =-+?. ∴ 2 2 2 c b a =+. 【证法4】(1876年美国总统Garfiel d 证明) 以a 、b 为直角边,以c 为斜边作两个全等的直角三角形, 则每个直角三角形的面积等于ab 2 1 . 把这两个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上. ∵ Rt ΔEAD ≌ Rt ΔCBE, ∴ ∠ADE = ∠BEC. ∵ ∠AED + ∠ADE = 90o, ∴ ∠AED + ∠BEC = 90o. ∴ ∠DEC = 180o―90o= 90o. ∴ ΔDEC 是一个等腰直角三角形, 它的面积等于22 1c . 又∵ ∠DAE = 90o, ∠EBC = 90o, ∴ AD ∥BC. ∴ ABCD 是一个直角梯形,它的面积等于 ()22 1 b a +. ∴ ()222 121221 c ab b a +?=+. ∴ 2 2 2 c b a =+. 【证法5】(梅文鼎证明) 做四个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c. 把它们拼成如图那样的一个多边形,使D 、

欧几里德算法

欧几里得算法的概述 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证 欧几里得算法原理 Lemma 1.3.1 若a, b 且 a = bh + r, 其中h, r , 则gcd(a, b) = gcd(b, r). 证明. 假设d1 = gcd(a, b) 且d2 = gcd(b, r). 我们证明d1| d2 且d2| d1, 因而可利用Proposition 1.1.3(2) 以及d1, d2 皆為正数得证d1 = d2. 因d1| a 且d1| b 利用Corollary 1.1.2 我们知d1| a - bh = r. 因為d1| b, d1| r 且d2 = gcd(b, r) 故由Proposition 1.2.5 知d1| d2. 另一方面, 因為d2| b 且d2| r 故d2| bh + r = a. 因此可得d2| d1. Lemma 1.3.1 告诉我们当 a > b > 0 时, 要求a, b 的最大公因数我们可以先将 a 除以 b 所得餘数若為r, 则a, b 的最大公因数等於 b 和r 的最大公因数. 因為0r < b < a, 所以当然把计算简化了. 接著我们就来看看辗转相除法. 由於gcd(a, b) = gcd(- a, b) 所以我们只要考虑a, b 都是正整数的情况. Theorem 1.3.2 (The Euclidean Algorithm) 假设a, b 且 a > b. 由除法原理我们知存在h0, r0 使得 a = bh0 + r0, 其中0r0 < b. 若r0 > 0, 则存在h1, r1 使得 b = r0h1 + r1, 其中0r1 < r0. 若r1 > 0, 则存在h2, r2 使得 r0 = r1h2 + r2, 其中0r2 < r1. 如此继续下去直到rn = 0 為止. 若n = 0 (即r0 = 0), 则gcd(a, b) = b. 若n1, 则gcd(a, b) = rn - 1. 証明. 首先注意若r0 0, 由於r0 > r1 > r2 > ... 是严格递减的, 因為r0 和0 之间最多仅能插入r0 - 1 个正整数, 所以我们知道一定会有nr0 使得rn = 0. 若r0 = 0, 即 a = bh0, 故知 b 為 a 之因数, 得证 b 為a, b 的最大公因数. 若r0 > 0, 则由Lemma 1.3.1 知 gcd(a, b) = gcd(b, r0) = gcd(r0, r1) = ... = gcd(rn - 1, rn) = gcd(rn - 1, 0) = rn - 1. 现在我们来看用辗转相除法求最大公因数的例子 Example 1.3.3 我们求 a = 481 和 b = 221 的最大公因数. 首先由除法原理得481 = 2 . 221 + 39, 知r0 = 39. 因此再考虑 b = 221 除以r0 = 39 得221 = 5 . 39 + 26, 知r1 = 26. 再以r0 = 39 除以r1 = 26 得39 = 1 . 26 + 13, 知r2 = 13. 最后因為r2 = 13 整除r1 = 26 知r3 = 0, 故由Theorem 1.3.2 知gcd(481, 221) = r2 = 13.

解 二 元 一 次 方 程 — — — 拓 展 欧 几 里 得 算 法

欧几里得算法与扩展欧几里得算法(求二元一次不定方程、乘法逆元) 1.欧几里得算法,即辗转相除法。用于求两个整数的最大公约数比较方便,时间复杂度为O(logN)N为两个整数的规模。 最大公约数,是能够同时被两个整数整除的最大整数。 比如说,求56和21的最大公约数:(每行数分别代表a=56,b=21,a%b)此时得到最大公约数为7。 递归代码如下: int gcd(int a, int b) return b ? gcd(b, a%b) : a; 2.扩展欧几里得算法 顾名思义,扩展欧几里得算法就是对欧几里得算法的扩展,可以应用于求二元一次方程的通解、乘法逆元等。 对于上面的欧几里得算法,当递归到出口时,a=7,b=0。很容易就可以得到一组ax+by=7的解:x=1,y=0。 那么如何通过7x+y=7的解逆推出56x+21y=7的解呢? 对于欧几里得算法的每一个状态,都存在ax+by=gcd(a,b)的解,我们假设有这样两组解(且他们为相邻状态): ax1+by1=gcd(a,b) a'x2+b'y2=gcd(a',b') 那么可以知道:a'=b b'=a%b 且gcd(a',b')=gcd(b,a%b)=gcd(a,b),

所以有 ax1+by1=bx2+(a%b)y2 另a%b可写为 a-a-b 所以有 ax1+by1=bx2+(a-(a-b)b)y2 故ax1+by1=ay2+bx2+(a-b)by2 故ax1=ay2 by1 = b(x2+ (a-b)by2) 故 x1=y2 y1 = x2 +(a-b)y2 故可以得到x1,y1与x2,y2的关系 : x1=y2 y1 = x2 +(a-b)y2 我们已知的是最后一组解,那么就要根据最后一组解逆推上去,就可以得到ax+by=gcd(a,b)的一组解了。 代码如下: int exgcd(int a, int b, intx, int y) return a; int r = exgcd(b, a%b, x, y); --递归到求出公约数,开始倒着求每一组的x,y。最后就得到这样一组特解了。 y = t - (a - b)*y; return r; 现在,通过扩展欧几里得算法,可以求出ax+by=gcd(a,b)的一组特解。那么如何求其通解呢? 3.二元一次方程通解 假设求得的特解为ax0+by0=r ,r=gcd(a,b). ax0+by0+ab*k-ab*k=r a(x0+b*k)+b(y0-a*k)=r

勾股定理16种证明方法

勾股定理的证明 【证法1】(课本的证明) a 、 b ,斜边长为 c ,再做三 个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 ab c ab b a 21 4214222?+=?++,整理得222c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形,则每个直角三角形的面积 等于ab 21.把这四个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上,B 、F 、 C 三点在一条直线上,C 、G 、D 三点在一条直线上. ∵Rt ΔHAE ≌Rt ΔEBF, ∴∠AHE = ∠BEF . ∵∠AEH + ∠AHE = 90o, ∴∠AEH + ∠BEF = 90o. ∴∠HEF = 180o―90o= 90o. ∴ 四边形EFGH 是一个边长为c 的 正方形. 它的面积等于c 2. ∵Rt ΔGDH ≌Rt ΔHAE, ∴∠HGD = ∠EHA . ∵∠HGD + ∠GHD = 90o, ∴∠EHA + ∠GHD = 90o. 又∵∠GHE = 90o, ∴∠DHA = 90o+ 90o= 180o. ∴ABCD 是一个边长为a + b 的正方形,它的面积等于()2 b a +. ∴ ()2 22 14c ab b a +?=+. ∴2 2 2 c b a =+.

以a 、b 为直角边(b>a ), 以c 为斜 边作四个全等的直角三角形,则每个直角 三角形的面积等于ab 21. 把这四个直角三 角形拼成如图所示形状. ∵Rt ΔDAH ≌ Rt ΔABE, ∴∠HDA = ∠EAB . ∵∠HAD + ∠HAD = 90o, ∴∠EAB + ∠HAD = 90o, ∴ ABCD 是一个边长为c 的正方形,它的面积等于c 2. ∵EF = FG =GH =HE = b ―a , ∠HEF = 90o. ∴EFGH 是一个边长为b ―a 的正方形,它的面积等于()2 a b -. ∴()22 214c a b ab =-+?. ∴2 2 2 c b a =+. 【证法4】(1876年美国总统Garfiel d 证明) 以a 、b 为直角边,以c 为斜边作两个全等的直角三角形,则每个直角三角形的面 积等于ab 21. 把这两个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上. ∵Rt ΔEAD ≌Rt ΔCBE, ∴∠ADE = ∠BEC . ∵∠AED + ∠ADE = 90o, ∴∠AED + ∠BEC = 90o. ∴∠DEC = 180o―90o= 90o. ∴ΔDEC 是一个等腰直角三角形, 它的面积等于221c . 又∵∠DAE = 90o, ∠EBC = 90o, ∴ AD ∥BC . ∴ABCD 是一个直角梯形,它的面积等于()2 21 b a +. ∴()2 2212122 1 c ab b a +?=+. ∴2 22c b a =+.

勾股定理种经典证明方法

勾股定理的证明 【证法1】 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 ab c ab b a 21 4214222?+=?++, 整理得 222c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形,则每个直角三角形 的面积等于ab 21. 把这四个直角三角形拼成如图所示形状,使 A 、E 、 B 三点在一条 直线上,B 、F 、C 三点在一条直线上,C 、G 、D 三点在一条直线上. ∵ Rt ΔHAE ≌ Rt ΔEBF, ∴ ∠AHE = ∠BEF . ∵ ∠AEH + ∠AHE = 90o, ∴ ∠AEH + ∠BEF = 90o. ∴ ∠HEF = 180o―90o= 90o. ∴ 四边形EFGH 是一个边长为 正方形. 它的面积等于c 2. ∵ Rt ΔGDH ≌ Rt ΔHAE, ∴ ∠HGD = ∠EHA .

∵ ∠HGD + ∠GHD = 90o, ∴ ∠EHA + ∠GHD = 90o. 又∵ ∠GHE = 90o, ∴ ∠DHA = 90o+ 90o= 180o. ∴ ABCD 是一个边长为a + b 的正方形,它的面积等于()2 b a +. ∴ ()2 2214c ab b a +?=+. ∴ 2 2 2 c b a =+. 【证法3】(赵爽证明) 以a 、b 为直角边(b>a ), 以c 为斜 边作四个全等的直角三角形,则每个直角 三角形的面积等于ab 21. 把这四个直角三 角形拼成如图所示形状. ∵ Rt ΔDAH ≌ Rt ΔABE, ∴ ∠HDA = ∠EAB . ∵ ∠HAD + ∠HAD = 90o, ∴ ∠EAB + ∠HAD = 90o, ∴ ABCD 是一个边长为c 的正方形,它的面积等于c 2. ∵ EF = FG =GH =HE = b ―a , ∠HEF = 90o. ∴ EFGH 是一个边长为b ―a 的正方形,它的面积等于()2 a b -. ∴ ()2 2 214c a b ab =-+?. ∴ 2 22c b a =+. 【证法4】(1876年美国总统Garfield 证明) 以a 、b 为直角边,以c 为斜边作两个全等的直角三角形,则每个直角三角形 的面积等于ab 21. 把这两个直角三角形拼成如图所示形状,使 A 、E 、 B 三点在一条 直线上. ∵ Rt ΔEAD ≌ Rt ΔCBE, ∴ ∠ADE = ∠BEC . ∵ ∠AED + ∠ADE = 90o, ∴ ∠AED + ∠BEC = 90o.

勾股定理16种经典证明方法

ab c ab b a 21421422 2 ?+=?++【证法1】(课本的证明) 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 整理得 222c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形,则每个直角三角形的面积等于ab 21 . 把这四个直角三 角形拼成如图所示形状,使A 、E 、B 三点在一条直线上,B 、F 、C 三点在一条直线上,C 、G 、D 三点在一条直线上. ∵ Rt ΔHAE ≌ Rt ΔEBF, ∴ ∠AHE = ∠BEF . ∵ ∠AEH + ∠AHE = 90o, ∴ ∠AEH + ∠BEF = 90o. ∴ ∠HEF = 180o―90o= 90o. ∴ 四边形EFGH 是一个边长为c 的 正方形. 它的面积等于c 2. ∵ Rt ΔGDH ≌ Rt ΔHAE, ∴ ∠HGD = ∠EHA . ∵ ∠HGD + ∠GHD = 90o, ∴ ∠EHA + ∠GHD = 90o. 又∵ ∠GHE = 90o, ∴ ∠DHA = 90o+ 90o= 180o. ∴ ABCD 是一个边长为a + b 的正方形,它的面积等于()2 b a +. ∴ ()2 2214c ab b a +?=+. ∴ 2 22c b a =+. 【证法3】(赵爽证明) 以a 、b 为直角边(b>a ), 以c 为斜 边作四个全等的直角三角形,则每个直角 三角形的面积等于ab 21. 把这四个直角三 角形拼成如图所示形状. ∵ Rt ΔDAH ≌ Rt ΔABE, ∴ ∠HDA = ∠EAB . ∵ ∠HAD + ∠HAD = 90o, ∴ ∠EAB + ∠HAD = 90o, ∴ ABCD 是一个边长为c 的正方形,它的面积等于c 2 . D G B a b c a b c a b c a b c b a b a b a b a c b a c b a c b a c b a c b a c b a b a c G D A F E H

扩展欧几里得算法详细举例解析

扩展欧几里得算法 什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可)。在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b)。即有a|b <=> b mod a=0。 ③gcd(a,b)表示a和b的最大公约数 ④a和b的线性组合表示ax+by(x,y为整数)。我们有:若d|a且d|b,则d|ax+by(这很重要!) 线性组合与GCD 现在我们证明一个重要的定理:gcd(a,b)是a和b的最小的正线性组合。 例:a=6 b=4,最小正线性组合为1*a+(-1)*b=2=gcd(a,b)。 证明: 设gcd(a,b)为d,a和b的最小的正线性组合为s ∵d|a且d|b, ∴d|s。 而a mod s=a-[a/s]s =a-[a/s](ax+by) =a(1-[a/s]x)-b[a/s]y 亦为a和b的线性组合 ∵a mod s

由这条定理易推知:若d|a且d|b,则d|gcd(a,b) Euclid算法 现在的问题是如何快速的求gcd(a,b)。穷举明显不是一个好方法(O(n)),所以需要一个更好的方法。 首先我们先提出一个定理:gcd(a,b)=gcd(b,a-bx)(x为正整数)。 证明: 设gcd(a,b)=d,gcd(b,a-bx)=e,则 ∵d|a,d|b ∴d|a-bx ∴d|gcd(b,a-bx),即d|e ∵e|b,e|a-bx ∴e|bx+(a-bx),即e|a ∴e|gcd(a,b),即e|d ∴d=e。证毕。 这个定理非常有用,因为它能快速地降低数据规模。 当x=1时,gcd(a,b)=gcd(b,a-b)。这就是辗转相减法。 当x达到最大时,即x=[a/b]时,gcd(a,b)=gcd(b,a mod b)。这个就是Euclid算法。它是不是Euclid提出的我不知道,但听说是在Euclid时代形成的,所以就叫Euclid算法了。程序非常的简单: function Euclid(a,b:longint):longint; begin if b=0 then exit(a) else exit(Euclid(b,a mod b)); end; Euclid算法比辗转相减法好,不仅好在速度快,而且用起来也方便。两种算法都有一个隐含的限制:a>=b。用辗转相减法时,必须先判断大小,而Euclid算法不然。若a

勾股定理逆定理八种证明方法

勾股定理逆定理八种证 明方法 集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]

证法1 作四个的直角三角形,把它们拼成如图那样的一个多边形,使D、E、F在一条上(设它们的两条直角边长分别为a、b ,斜边长为c.)。过点C作AC的延长线交DF于点P. ∵ D、E、F在一条直线上,且RtΔGEF ≌ RtΔEBD, ∴ ∠EGF = ∠BED, ∵ ∠EGF + ∠GEF =90°, ∴ ∠BED + ∠GEF = 90°, ∴ ∠BEG =180°―90°= 90° 又∵ AB = BE = EG = GA = c, ∴ ABEG是一个边长为c的正方形。 ∴ ∠ABC + ∠CBE = 90° ∵ RtΔABC ≌ RtΔEBD, ∴ ∠ABC = ∠EBD. ∴ ∠EBD + ∠CBE = 90° 即∠CBD= 90° 又∵ ∠BDE = 90°,∠BCP = 90°,BC = BD = a. ∴ BDPC是一个边长为a的正方形。 同理,HPFG是一个边长为b的正方形. 设多边形GHCBE的面积为S,则 证法2 作两个的直角三角形,设它们的两条直角边长分别为a、b(b>a),做一个边长为c的正方形。斜边长为c. 再把它们拼成如图所示的多边形,使E、A、C 三点在一条直线上. 过点Q作QP∥BC,交AC于点P. 过点B作BM⊥PQ,垂足为M;再过点F作FN⊥PQ,垂足为N. ∵ ∠BCA = 90°,QP∥BC, ∴ ∠MPC = 90°, ∵ BM⊥PQ, ∴ ∠BMP = 90°, ∴ BCPM是一个矩形,即∠MBC =90°。 ∵ ∠QBM + ∠MBA = ∠QBA = 90°,∠ABC + ∠MBA = ∠MBC = 90°, ∴ ∠, 又∵ ∠BMP = 90°,∠BCA = 90°,BQ = BA = c, ∴ RtΔBMQ ≌ RtΔBCA. 同理可证RtΔQNF ≌ RtΔAEF.即 证法3 作两个全等的直角三角形,同证法2,再作一个边长为c的正方形。把它们拼成如图所示的多边形. 分别以CF,AE为边长做正方形FCJI和AEIG, ∵EF=DF-DE=b-a,EI=b, ∴FI=a, ∴G,I,J在同一直线上, ∵CJ=CF=a,CB=CD=c,∠CJB = ∠CFD = 90°,

扩展欧几里德算法计算乘法逆元

扩展欧几里德算法计算乘法逆元 一.欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 欧几里德算法就是根据这个原理来做的,其算法用C++语言描述为: void swap(int & a, int & b) { int c = a a = b; b = c; } int gcd(int a,int b){ if(0 == a ){ return b; } if( 0 == b){ return a; } if(a > b){ swap(a,b); } int c; for(c = a % b ; c > 0 ; c = a % b){

a = b; b = c; } return b; } 二.扩展欧几里德算法乘法逆元 模P乘法逆元 对于整数a、p,如果存在整数b,满足ab mod p =1,则说,b是a的模p乘法逆元。定理:a存在模p的乘法逆元的充要条件是gcd(a,p) = 1 三.扩展欧几里德算法如下: #include int gcd(int a, int b , int &ar,int &br){ int x1,x2,x3; int y1,y2,y3; int t1,t2,t3; int k; if(0 == a){ //有一个数为0,就不存在乘法逆元 ar = 0; br = 0; return b; }

if(0 == b) { ar = 0; br = 0 ; return a; } x1 = 1; x2 = 0; x3 = a; y1 = 0; y2 = 1; y3 = b; for(t3 = x3 % y3 ; t3 != 0 ; t3 = x3 % y3){ k = x3/y3; t2 = x2-k*y2; t1 = x1-k*y1; x1 = y1; x1 = y2; x3 = y3; y1 = t1; y2 = t2; y3 = t3; }

勾股定理的十六种证明方法大学论文

勾股定理的十六种证明方法 【证法1】 此主题相关图片如下: 做8个全等的直角三角形,设它们的两条直角边长分别为a、b,斜边长为c,再做三个边长分别为a、b、c的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b,所以面积相等. 即 a^2+b^2+4*(ab/2)=c^2+4*(ab/2) 整理得到:a^2+b^2=c^2。 【证法2】 以a、b 为直角边,以c为斜边做四个全等的直角三角形,则每个直角三角形的面积等于 ab/2.把这四个直角三角形拼成如图所示形状,使A、E、B三点在一条直线上,B、F、C三点在一条直线上,C、G、D三点在一条直线上. ∵ RtΔHAE ≌ RtΔEBF, ∴∠AHE = ∠BEF. ∵∠AEH + ∠AHE = 90o, ∴∠AEH + ∠BEF = 90o. ∴∠HEF = 180o―90o= 90o. ∴四边形EFGH是一个边长为c的

正方形. 它的面积等于c^2. ∵ RtΔGDH ≌ RtΔHAE, ∴∠HGD = ∠EHA. ∵∠HGD + ∠GHD = 90o, ∴∠EHA + ∠GHD = 90o. 又∵∠GHE = 90o, ∴∠DHA = 90o+ 90o= 180o. ∴ ABCD是一个边长为a + b的正方形,它的面积等于(a+b)^2. ∴(a+b)^2=c^2+4*(ab/2),∴ a^2+b^2=c^2。 此主题相关图片如下: 【证法3】 以a、b 为直角边(b>a),以c为斜边作四个全等的直角三角形,则每个直角三角形的面积等于ab/2. 把这四个直角三角形拼成如图所示形状. ∵ RtΔDAH ≌ RtΔABE, ∴∠HDA = ∠EAB. ∵∠HAD + ∠HAD = 90o, ∴∠EAB + ∠HAD = 90o, ∴ ABCD是一个边长为c的正方形,它的面积等于c^2.

快速指数取模运算与用扩展欧几里得算法求解最大公约数和求乘法逆元

实验1.1 快速指数取模运算 一、实验1.1源代码: #include "stdio.h" #include "stdlib.h" #include "iostream" using namespace std; void Mode(int a, int b, int n) { int c=1; do{ if(a%2==0) { a=a/2; b=(b*b)%n; } else { a=a-1; c=(b*c)%n; } }while(a!=0); cout<<"取余结果为:"<>a; cout<<"请输入该基数b:"<>b; cout<<"请输入被除数n:"<>n; Mode(a,b,n);

二、实验效果图:

实验1.2 用扩展欧几里得算法求解最大公约数和求乘法逆元 一、实验1.2源代码: #include int extended_Gcd(int a,int b, int &x, int &y) //求最大公约数 { if (b == 0) { x = 1; y = 0; return a; } else { int gcd = extended_Gcd(b, a%b, x, y); int t = x; x = y; y = t - (a / b) * y; return gcd; } } int extended_Ivn(int f, int d, int *result) //求乘法逆元 { int x1, x2, x3, y1, y2, y3, t1, t2, t3, q; x1 = y2 = 1; x2 = y1 = 0; x3 = (f >= d) ? f : d; y3 = (f >= d) ? d : f; while (1) { if (y3 == 0) { *result = x3; // 两个数不互素则result为两个数的最大公约数,此时返回值为零 return 0; } if (y3 == 1) {

欧几里德算法

欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。 定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(greatest common divisor)缩写为gcd。 辗转相除法的结果条件是两个数取模等于零,即一个数能整除另外一个数时,此时较小的数就是最大公约数 算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2). 方法举例理解 1、查找约数法.先分别找出每个数的所有约数,再从两个数的约数中找出公有的约数, 其中最大的一个就是最大公约数.例如,求12和30的最大公约数.12的约数有:1、 2、3、4、6、12;30的约数有:1、2、3、5、6、10、15、30.12和30的公约数 有:1、2、3、6,其中6就是12和30的最大公约数. 2、辗转相除法.当两个数都较大时,采用辗转相除法比较方便.其方法是:以小 数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.例如:求4453和5767的最大公约数时,可作如下除法.5767÷4453=1余1314 4453÷1314=3余511 1314÷511=2余292 511÷292=1余219 292÷219=1余73 219÷73=3 于是得知,5767和4453的最大公约数是73. 则对于题目中所给按算法思想求出32和24的最大公约数,可按照上面方法进行计算。 32÷24=1 余8 24÷8=3 于是得知,32和24的最大公约数是8.

勾股定理16种证明方法

v1.0 可编辑可修改 【证法1】(课本的证明) 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 ab c ab b a 21 4214222?+=?++, 整理得 222c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形,则每个直角三角形的面积 等于ab 21. 把这四个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上,B 、F 、 C 三点在一条直线上,C 、G 、 D 三点在一条直线上. ∵ Rt ΔHAE ≌ Rt ΔEBF, ∴ ∠AHE = ∠BEF . ∵ ∠AEH + ∠AHE = 90o, ∴ ∠AEH + ∠BEF = 90o. ∴ ∠HEF = 180o―90o= 90o. ∴ 四边形EFGH 是一个边长为c 的 正方形. 它的面积等于c 2.

v1.0 可编辑可修改 ∴∠HGD = ∠EHA. ∵∠HGD + ∠GHD = 90o, ∴∠EHA + ∠GHD = 90o. 又∵∠GHE = 90o, ∴∠DHA = 90o+ 90o= 180o. ∴ ABCD是一个边长为a + b的正方形,它的面积等于()2b a+. ∴()2 2 2 1 4c ab b a+ ? = + . ∴2 2 2c b a= +. 【证法3】(赵爽证明) 以a、b 为直角边(b>a),以c为斜边作四个全等的直角三角形,则每个直角 三角形的面积等于 ab 2 1 . 把这四个直角三 角形拼成如图所示形状. ∵ RtΔDAH ≌ RtΔABE, ∴∠HDA = ∠EAB. ∵∠HAD + ∠HAD = 90o, ∴∠EAB + ∠HAD = 90o, ∴ ABCD是一个边长为c的正方形,它的面积等于c2. ∵ EF = FG =GH =HE = b―a , ∠HEF = 90o. ∴ EFGH是一个边长为b―a的正方形,它的面积等于()2a b-. ∴ ()2 2 2 1 4c a b ab= - + ? .

c++,使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现5

实验九 一、实验内容 教材3.9 定义递归函数实现下面的Ackman函数 n+1 m=0 Acm(m,n)= Acm(m-1,1) n=0 Acm(m-1,Acm(m,n-1)) n>0,m>0 教材3.10 用递归法实现勒让德多项式: 1 n=0 Pn= x n=1 ((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n 教程p24 使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现 教程p26 编程:将上题以多文件方式组织,在area.h中声明各个area()函数原型,在area.cpp文件中定义函数,然后在Exp9_2中包含area.h,定义main() 函数并执行。 二、实验目的 1、掌握函数的嵌套调用好递归调用 2、掌握递归算法 3、了解内联函数、重载函数、带默认参函数的定义及使用方法 4、掌握程序的多文件组织 5、掌握编译预处理的内容,理解带参数宏定义与函数的区别 三、实验步骤 教材3.9 定义递归函数实现下面的Ackman函数 n+1 m=0 Acm(m,n)= Acm(m-1,1) n=0 Acm(m-1,Acm(m,n-1)) n>0,m>0 教材3.10用递归法实现勒让德多项式: 1 n=0 Pn= x n=1 ((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n 教程p24 使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现 教程p26 编程:将上题以多文件方式组织,在area.h中声明各个area()函数原型,在area.cpp文件中定义函数,然后在Exp9_2中包含area.h,定义main() 函数并执行。 四、实验数据及处理结果

同余式的欧几里得算法

同余式的欧几里德算法 理论依据 定理1,a b Z + ?∈,1 (1)k k k k Q a P b r --=-对{1,2,...,}k n ?∈成立,其中k Q 、k P 、k r 满 足下述递推关系: 11a q b r =+,212b q r r =+,1323r q r r =+,…,111k k k k r q r r -++=+,…,110n n n r q r -+=+; 01P =,11P q =,2210P q P P =+,…,12k k k k P q P P --=+,…,12n n n n P q P P --=+; 00Q =,11Q =,2210Q q Q Q =+,…,12k k k k Q q Q Q --=+,…,12n n n n Q q Q Q --=+; {2,3,...,}k n ?∈。(课本《初等数论》第三版10P ) 显然其中(,)n r a b =且1 (1) (1)n n n n n Q a P b r --+-=,故得,s t Z ∈满 (,)sa tb a b +=。故由定理可得到求解二元一次不定方程ax by c +=的欧几里德算法 (详见课本《初等数论》第三版27P )。下面导出求解一次同余式的欧几里德算法。 设同余式为(%)ax b m ≡,它等价于方程二元一次不定方程ax my b +=。由上面所述算法可以得到,s t Z ∈满(,)sa tm a m +=,而它等价于(,)(%)sa a m m ≡。当 (,)|a m b 时,同余式有解,一个特解为(%)(,) b x s m a m ≡ ,通解为 (%)(,)(,) b m x s k m a m a m ≡ +,{0,1,...,(,)1}k a m ?∈-。 计算过程 与求解二元一次不定方程不同的是,求解同余式不需要m 的系数k P 。 计算时可以借助表格:

勾股定理16种经典证明方法

ab c ab b a 2 1421422 2 ?+=?++ 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形. 从图上可以看到,这两个正方形的边长都是a + b ,所以面积相等. 即 整理得 222c b a =+. 【证法2】(邹元治证明) 以a 、b 为直角边,以c 为斜边做四个全等的直角三角形,则每个直角三角形的面积等于ab 21 . 把这四个直角三 角形拼成如图所示形状,使A 、E 、B 三点在一条直线上,B 、F 、C 三点在一条直线上,C 、G 、D 三点在一条直线上. ∵ Rt ΔHAE ≌ Rt ΔEBF, ∴ ∠AHE = ∠BEF . ∵ ∠AEH + ∠AHE = 90o, ∴ ∠AEH + ∠BEF = 90o. ∴ ∠HEF = 180o―90o= 90o. ∴ 四边形EFGH 是一个边长为c 的 正方形. 它的面积等于c 2 . ∵ Rt ΔGDH ≌ Rt ΔHAE, ∴ ∠HGD = ∠EHA . ∵ ∠HGD + ∠GHD = 90o, ∴ ∠EHA + ∠GHD = 90o. 又∵ ∠GHE = 90o, ∴ ∠DHA = 90o+ 90o= 180o. ∴ ABCD 是一个边长为a + b 的正方形,它的面积等于()2 b a +.

∴ ()2 22 4c ab b a +?=+. ∴ 2 22c b a =+. 【证法3】(赵爽证明) 以a 、b 为直角边(b>a ), 以c 为斜 边作四个全等的直角三角形,则每个直角 三角形的面积等于ab 21 . 把这四个直角三 角形拼成如图所示形状. ∵ Rt ΔDAH ≌ Rt ΔABE, ∴ ∠HDA = ∠EAB . ∵ ∠HAD + ∠HAD = 90o, ∴ ∠EAB + ∠HAD = 90o, ∴ ABCD 是一个边长为c 的正方形,它的面积等于c 2 . ∵ EF = FG =GH =HE = b ―a , ∠HEF = 90o. ∴ EFGH 是一个边长为b ―a 的正方形,它的面积等于()2 a b -. ∴ ()2 2 214c a b ab =-+?. ∴ 2 22c b a =+. 【证法4】(1876年美国总统Garfield 证明) 以a 、b 为直角边,以c 为斜边作两个全等的直角三角形,则每个直角三角形的面积等于ab 21 . 把这两个直角三 角形拼成如图所示形状,使A 、E 、B 三点在一条直线上. ∵ Rt ΔEAD ≌ Rt ΔCBE, ∴ ∠ADE = ∠BEC . ∵ ∠AED + ∠ADE = 90o, ∴ ∠AED + ∠BEC = 90o. ∴ ∠DEC = 180o―90o= 90o. ∴ ΔDEC 是一个等腰直角三角形, 它的面积等于2 21c .

勾股定理(毕达哥拉斯定理)及各种证明方法

勾股定理(毕达哥拉斯定理) 是一个,是人类早期发现并证明的重要数学定理之一,用思想解决几何问题的最重要的工具之一,也是数形结合的纽带之一。是的一个特例。约有400种证明方法,是数学定理中证明方法最多的之一。“”是勾股定理最基本的公式。勾股数组方程a 2+b 2=c 2的正整数组(a ,b ,c )。(3,4,5)就是。也就是说,设直角三角形两直角边为a 和b ,斜边为c ,那么a 2+b 2=c 2,即直角三角形两直角边的平方和等于斜边的平方。 勾股定理 命题1如果的两条直角边长分别为a ,b ,斜边长为c ,那么 。 勾股定理的逆定理 命题2如果的三边长a ,b ,c 满足 ,那么这个三角形是直角三角形。 【证法1】(赵爽证明) 以a 、b 为直角边(b>a ),以c 为斜边作四个全等的直角三角形,则每 个直角三角形的面积等于2 1ab.把这四个直角三角形拼成如图所示形状. ∵RtΔDAH≌RtΔABE,∴∠HDA=∠EAB. ∵∠HAD+∠HAD=90o,∴∠EAB+∠HAD=90o, ∴ABCD 是一个边长为c 的正方形,它的面积等于c2. ∵EF=FG=GH=HE=b―a,∠HEF=90o. ∴EFGH 是一个边长为b―a 的正方形,它的面积等于. ∴ ∴. 【证法2】(课本的证明) 做8个全等的直角三角形,设它们的两条直角边长分别为a 、b ,斜边长为c ,再做三个边长分别为a 、b 、c 的正方形,把它们像上图那样拼成两个正方形.从图上可以看到,这两个正方形的边长都是a+b ,所以面积相等. 即,整理得. 【证法3】(1876年美国总统Garfield 证明)以a 、b 为直角边,以c 为斜边作两个全等的直角三角形,则每个直角三角形的面积等于.把这两个直角三角形拼成如图所示形状,使A 、E 、B 三点在一条直线上. ∵RtΔEAD≌RtΔCBE,∴∠ADE=∠BEC. ∵∠AED+∠ADE=90o,∴∠AED+∠BEC=90o.∴∠DEC=180o―90o=90o. ∴ΔDEC 是一个等腰直角三角形,它的面积等于 .又∵∠DAE=90o,∠EBC=90o,∴AD∥BC.∴ ABCD 是一个直角梯形,它的面积等于 ∴.∴.

勾股定理几何原本中的证明

勾股定理的证明 【摘要】:《几何原本》(希腊语:Στοιχε?α)是古希腊数学家欧几里得所著的一部数学著作,共13卷。这本著作是现代数学的基础,在西方是仅次于《圣经》而流传最广的书籍。本文主要应用证明三角形全等、证明平行线间的距离处处相等等,最终推导出勾股定理的证明。 【引言】:勾股定理在西方被称为毕达哥拉斯定理,该定理首先由古希腊哲学家、数学家毕达哥拉斯(Pythagoras 约前580-前500)提出并证明,后经古希腊数学家欧几里得(Euclid 前3世纪)证明,并收录在现代数学的基础读本《几何原本》中。而在中国早期也在例如《九章算术》之类的读本中探讨过该定理。本文引用《几何原本》中对毕达哥拉斯定里的证明,并对其整理延展最终之目的在于更深一步的去了解毕达哥拉斯定理和旷世奇书《几何原本》达到科学启蒙的功效。 【关键词】:勾股定理证明 【材料和方法】: 已知:三角形ABC为直角三角形,且BC=a,AC=b,AB=c. 求证:a2+b2=c2 证明:如彩图所示,已直角三角形的三边a、b、c为边做三个正方形

(尺规作图)分别为CBFG、ACHK、ABED.连结CD、KB 过点C 作CN⊥DE于N交AB于M. [求证:平行线间的距离处处相等] 证明:在任意的两条平行线l、m间任取l上两点A、B向m 上作垂线,垂足分别为C、D.(如下图所示) ∵AC⊥m,BD⊥m ∴AC∥BD 又∵l∥m ∴四边形ABCD是平行四边形 ∴AC=BD 又∵l、m、AB、CD都是任意的 ∴平行线间的距离处处相等 ∵△ABK与正方形ACHK有相同的底AK, 且△ABK的高等于AC(在平行线AK、BH间的距离 处处相等已证) ∴S正方形ACKH=2S△ABK 又∵△ACD与矩形ADNM有相同的底 AD,且△ADC的高等于AM(在平行线AD 、 CN间的距离处处相等已证)∴S矩形ADNM=2S△ADC c b a M N D E H K F G B A C

相关文档
最新文档