请问怎样证明√2(2的开方)不是有理数?用C++语言
请问怎样证明√2(2的开方)不是有理数?用C++语言 问题点数:20、回复次数:17Top
1 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2005-10-02 21:50:27 得分 0
那你首先要知道如何用数学方法证明~
Top
2 楼Oliver_ren(初来咋到)回复于 2005-10-02 21:53:15 得分 0
我只知道有理数的定义,呵呵,用数学方法还真忘记了Top
3 楼MoriyaLB(啸川)回复于 2005-10-03 10:04:10 得分 10
设2的开方是sqrt2(我不会打符号)
那么sqrt2=m/n,其中m和n是整数,并且m和n互质(有理数的定义)
平方后,有m×m = 2 n×n
那么2|m,从而2|n,与m与n互质矛盾,所以sqrt2是无理数
代码因此太简单了,不用写就证毕了Top
4 楼jixingzhong(瞌睡虫·星辰)回复于 2005-10-03 10:34:10 得分 0
楼上的是牛人 ... 偶佩服Top
5 楼A_Knuth_A(高德纳)回复于 2005-10-03 23:43:57 得分 0
从2|m*m,就能推出2|m吗?为什么?Top
6 楼tb01412(tb)回复于 2005-10-03 23:47:02 得分 0
没想到学程序设计的人中还有对数学知识记得这么牢的人!!
牛!!!!Top
7 楼liuhua1982(亡灵)回复于 2005-10-04 01:21:02 得分 0
数学真是太美丽了Top
8 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2005-10-04 10:02:26 得分 0
上面的证明方法在高中的时候应该讲过吧~~~
就是用三楼的证明方法~~~
用的是有理数的定义和反证法来实现~Top
9 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2005-10-04 10:09:37 得分 5
sqrt2=m/n,其中m和n是整数,并且m和n互质(有理数的定义)
平方后,有m×m = 2 n×n
由于2*n×n,所以m×m必为偶数.
但是由于m×m必为偶数,所以m必为偶数,否则m为奇数,m×m必为奇数--->m必为偶数,
设m = 2k(k为整数);所以m*m = 4k^2,所以n×n = 2k^2,同理,n×n为偶数,
同理,n 为偶数~~
由于m和n同为偶数,所以与m和n互质矛盾,所以√2(2的开方)不是有理数~~~Top
10 楼A_Knuth_A(高德纳)回复于 2005-10-04 12:06:56 得分 5
若假定前提是2|m*m,那么m一定是偶数吗?,你需要证明的是sqrt(2)是否是有理数,此结论到此尚未证明,何以见得由2|m*m就一定能推出2|m呢?逻辑推理过程中有可能(当然实际情况是不可能的,但是证明过程是需要严谨的)存在一个有理数q,使得q满足m=q*sqrt(2)(由于m是有理数,q亦为有理数,那么sqrt(2)需要为有理数才行(基础数论知识),然而sqrt(2)我们此时并不知道其是否为有理数,所以可以假定成立),那么有2|m*m,m=q*sqrt(2),不可能推出2|q。是吧?Top
11 楼sten(近视进士)回复于 2005-10-04 12:31:33 得分 0
楼上的说的是什么逻辑呀,你楼上的说的就不错!
至少你的逻辑说服不了我!Top
12 楼MoriyaLB(啸川)回复于 2005-10-04 13:32:53 得分 0
若假定前提是2|m*m,那么m一定是偶数吗?,你需要证明的是sqrt(2)是否是有理数,此结论到此尚未证明,何以见得由2|m*m就一定能推出2|m呢?逻辑推理过程中有可能(当然实际情况是不可能的,但是证明过程是需要严谨的)存在一个有理数q,使得q满足m=q*sqrt(2)(由于m是有理数,q亦为有理数,那么sqrt(2)需要为有理数才行(基础数论知识),然而sqrt(2)我们此时并不知道其是否为有理数,所以可以假定成立),那么有2|m*m,m=q*sqrt(2),不可能推出2|q。是吧?
呵呵,Knuth是我的偶像,可是你有点对不起这个名字啦。
sqrt2 = m/n ,是做的一个假设,根据有理数的定义,m和n是互质的整数
2|m*m,如果m不能被2整除……,那m*m怎么会有2这个因子?
另外你的证明才是有错误的
q 满足 m= q*sqrt(2) ,那么q也等于sqrt(2)很容易说明你是错误的
Top
13 楼ilelf(獨毒)回复于 2005-10-04 14:17:07 得分 0
4楼的证明是正确的。认为他不正确的人可能钻了点牛角尖,要不就是数学知识有点忘记了吧,推荐看看数学书Top
14 楼ilelf(獨毒)回复于 2005-10-04 14:17:55 得分 0
不过我还是不太清楚用C++怎么来证明,
牛人们能不能写一下用C++证明的过程啊Top
15 楼MoriyaLB(啸川)回复于 2005-10-04 14:30:36 得分 0
何苦呢,汗Top
16 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-10-04 19:31:54 得分 0
程序证明???
太搞笑了吧~Top
17 楼awl005(忽然)回复于 2005-10-06 16:50:12 得分 0
若假定前提是2|m*m,那么m一定是偶数吗?,你需要证明的是sqrt(2)是否是有理数,此结论到此尚未证明,何以见得由2|m*m就一定能推出2|m呢?逻辑推理过程中有可能(当然实际情况是不可能的,但是证明过程是需要严谨的)存在一个有理数q,使得q满足m=q*sqrt(2)(由于m是有理数,q亦为有理数,那么sqrt(2)需要为有理数才行(基础数论知识),然而sqrt(2)我们此时并不知道其是否为有理数,所以可以假定成立),那么有2|m*m,m=q*sqrt(2),不可能推出2|q。是吧?
还是一样的方法来证明:若2|m*m,则2|m
假设m是奇数,则令m=2k+1, 那么m*m=(2k+1)*(2k+1)=4k*k+4k+2+1=2(2k*k+2k+1)+1
而2(2k*k+2k+1)+1是奇数,这与2|m*m矛盾
所以若2|m*m,则2|m
Top




