选自《费马大定理:一个困惑了世间智者358年的谜》,有少许改动。
原译者:薛密

\(\sqrt{2}\)是无理数,即不能写成一个分数。欧几里得以反证法证明此结论。第一步是假定相反的事实是真的,即\(\sqrt{2}\)可以写成某个未知的分数。用\(\frac{p}{q}\) 来代表这个假设的分数,其中 \(p\) 和 \(q\) 是两个整数。

在开始证明本身之前,需要对分数和偶数的某些性质有个基本的了解。

(1) 如果任取一个整数并且用2去乘它,那么得到的新数一定是偶数。这基本上就是偶数的定义。

(2) 如果已知一个整数的平方是偶数,那么这个整数本身一定是偶数。

(3) 最后,分数可以简化。例如分数\(\frac{16}{24}\),用2除分子分母得\(\frac{8}{12}\),两个分数\(\frac{16}{24}\)与\(\frac{8}{12}\)是相等的,进一步,\(\frac{8}{12}\)与\(\frac{4}{6}\) 是相等的,而\(\frac{4}{6}\) 又与\(\frac{2}{3}\)是相等的。然而,\(\frac{2}{3}\)不能再化简,因为2 和3没有公因数。不可能将一个分数永远不断地简化。

欧几里得相信\(\sqrt{2}\)不可能写成一个分数。然而,由于他采用反证法,所以他先假定

\begin{equation*}\sqrt{2}=\frac{p}{q}\end{equation*}

将两边平方,得

\begin{equation*}2=\frac{p^2}{q^2}\end{equation*}

\begin{equation*}2q^2=p^2\end{equation*}

现在根据第(1) 点我们知道\(p^2\) 必定是偶数。此外,根据第(2) 点我们知道 \(p\) 本身也必须是偶数。但是,如果 \(p\) 是偶数,那么它可以写成\(2m\),其中\(m\) 是某个别的整数。这是从第(1) 点可以得出的结论。将这再代回到等式中,我们得到

\begin{equation*}2q^2=p^2=(2m)^2=4m^2\end{equation*}

两边除以2,得

\begin{equation*}q^2=2m^2\end{equation*}

但是根据我们前面用过的同样的论证,我们知道 \(q^2\) 必须是偶数,因而 \(q\) 本身必须是偶数。如果确实是这样,那么 \(q\) 可以写成\(2n\),其中 \(n\) 是某个别的整数。如果我们回到开始的地方,那么

\begin{equation*}\sqrt{2}=\frac{p}{q}=\frac{2m}{2n}=\frac{m}{n}\end{equation*}

现在我们得到一个新的分数\(\frac{m}{n}\),它比\(\frac{p}{q}\)更简单。

然而,我们发现对\(\frac{m}{n}\)我们可以精确地重复以上同一个过程,在结束时我们将产生一个更简单的分数,比方说\(\frac{g}{h}\)。然后又可以对这个分数再重复相同的过程,而新的更为简单的分数,比方说\(\frac{e}{f}\)将是。我们可以对它再作同样的处理,并且一次次地重复这个过程,不会结束。但是根据第(3) 点我们知道任何分数不可能永远简化下去,总是必须有一个最简单的分数存在,而我们最初假定的分数\(\frac{p}{q}\) 似乎不服从这条法则。于是,我们可以有正当的理由说我们得出了矛盾。如果\(\sqrt{2}\)可以写成为一个分数,其结果将是不合理的,所以,说\(\sqrt{2}\)不可能写成一个分数是对的。于是,\(\sqrt{2}\)是一个无理数。

欧几里得证明$\sqrt{2}$是无理数的更多相关文章

  1. <数论相关>欧几里得与拓展欧几里得证明及应用

    欧几里得算法 欧几里得算法的复杂度为O(log(n)),是一个非常高效的求最大公约数算法. 在这里不证明欧几里得算法的复杂度,有兴趣的可以访问以下链接:http://blog.sina.com.cn/ ...

  2. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)

    污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...

  3. POJ2677 Tour(DP+双调欧几里得旅行商问题)

    Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3929   Accepted: 1761 Description ...

  4. URAL1204. Idempotents(扩展欧几里得)

    1204 大体推推 会出来这个式子 x(x-1) = k*n;n = p*q ;x(x-1)%(p*q)==0; 因为p,q都为素数 那也就是说x和x-1中必定包含这两个数 而且一个里面只能有一个 不 ...

  5. 欧几里得旅行商问题 java与c++实现

    双调欧几里得旅行商问题是一个经典动态规划问题.<算法导论(第二版)>思考题15-1 旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程.这个解的一般形式为NP的(在多项式时间内可 ...

  6. [POJ1845&POJ1061]扩展欧几里得应用两例

    扩展欧几里得是用于求解不定方程.线性同余方程和乘法逆元的常用算法. 下面是代码: function Euclid(a,b:int64;var x,y:int64):int64; var t:int64 ...

  7. 【bzoj2242】: [SDOI2011]计算器 数论-快速幂-扩展欧几里得-BSGS

    [bzoj2242]: [SDOI2011]计算器 1.快速幂 2.扩展欧几里得(费马小定理) 3.BSGS /* http://www.cnblogs.com/karl07/ */ #include ...

  8. bzoj 2242: [SDOI2011]计算器【扩展欧几里得+快速幂+BSGS】

    第一问快速幂板子 第二问把式子转化为\( xy\equiv Z(mod P)\rightarrow xy+bP=z \),然后扩展欧几里得 第三问BSGS板子 #include<iostream ...

  9. poj 1845 【数论:逆元,二分(乘法),拓展欧几里得,费马小定理】

    POJ 1845 题意不说了,网上一大堆.此题做了一天,必须要整理一下了. 刚开始用费马小定理做,WA.(poj敢说我代码WA???)(以下代码其实都不严谨,按照数据要求A是可以等于0的,那么结果自然 ...

随机推荐

  1. grid列的值格式化

    //列格式化 waf.defineCustomeClass("cellformatter.ratioFomatter", cellformatter.defaultFormatte ...

  2. php Unable to find the wrapper "https"

    php -m | grep -i --color openssl php 没有openssl模块 cd /data/source/php-5.3.29/ext/openssl #php的解压包下面 y ...

  3. MySQL好用的数学函数

    最近项目很忙,分给我的功能都比较复杂,还好能应付的下来.在工作的过程中,我发现使用mysql的自带函数能够极大的减少程序的复杂度.这是必然的,使用mysql的函数,能够在程序里面省却很多的循环遍历.但 ...

  4. static静态变量的理解

    静态变量 类型说明符是static.静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...

  5. sql总结一

    建表: select * from fruit; create table fruit ( id varchar(10) not null, name varchar(20) default '' n ...

  6. excel2013添加坐标轴名称label

    图画好了,x.y轴没有名称,怎么办那 点击左上角有个---添加图标元素----里面有轴标题应该就是

  7. Linux环境下发布项目(Tomcat重新启动)

    在Linux系统下,重启Tomcat 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看Tomcat是否 ...

  8. lunix的查看Tomcat目录下日志的快速操作

    可以使用cd命令,cd命令的功能是切换到指定的目录: 命令格式:cd [目录名] 有几个符号作为目录名有特殊的含义: "/"代表根目录. ".."代表上一级目录 ...

  9. 自然语言18_Named-entity recognition

    https://en.wikipedia.org/wiki/Named-entity_recognition http://book.51cto.com/art/201107/276852.htm 命 ...

  10. Java查找算法——二分查找

    import java.lang.reflect.Array; import java.nio.Buffer; import java.util.Arrays; import java.util.Ra ...