CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请问怎样证明√2(2的开方)不是有理数?用C++语言

楼主Oliver_ren(初来咋到)2005-10-02 21:40:59 在 C/C++ / 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

相关问题

  • 超大整数开方问题(c语言)
  • 简单问题C语言中有没有开方运算
  • 用一个有理数表示三个有理数
  • C#中的开方函数是如何?
  • C语言中文件二进制打开方式与一般打开方式有什么重大的区别吗(某些字符的转换我是了解一点,但不是很清楚,还有其它的区别吗)?
  • 求有理数的正则表达式!!!
  • 求整数开方c++的源代码(立即给分)
  • c++中文件打开方式的问题?
  • 学C语言。。。
  • C语言书!

关键词

  • c++
  • c++语言
  • 偶数
  • 数学
  • 有理数
  • sqrt
  • 证明
  • 开方
  • 使得q满足
  • 奇数

得分解答快速导航

  • 帖主:Oliver_ren
  • MoriyaLB
  • snowbirdfly
  • A_Knuth_A

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo