CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

编写验证歌德巴赫猜想的函数?输入n〉6验证

楼主xiamin(夏敏)2006-03-07 11:27:01 在 C/C++ / C++ 语言 提问

编写验证歌德巴赫猜想的函数?输入n〉6验证 问题点数:10、回复次数:12Top

1 楼xiamin(夏敏)回复于 2006-03-07 11:28:25 得分 0

who   can?Top

2 楼ugg(逸学堂(exuetang.net))回复于 2006-03-07 13:31:45 得分 0

没看懂......Top

3 楼lbing7(向青润老大学习!!!)回复于 2006-03-07 13:52:39 得分 0

数学上证明了?  
   
  那个猜想  
   
  ..............  
  Top

4 楼lbing7(向青润老大学习!!!)回复于 2006-03-07 13:53:14 得分 0

我还以为你写出来了呢?  
   
  吓我一跳!Top

5 楼guogangj(无名小卒)回复于 2006-03-07 14:04:48 得分 4

哥德巴赫的猜想是这样的:所有的大于2的偶数,都可以表示为两个素数的和,比如4=2+2,   6=3+3,8=5+3,   10=7+3,12=7+5,14=11+3……而楼主要写的程序只是证明任意一个实例而已,并非让你用计算机攻破“1+1”,类似的题目以前多得了……通常,这是一个漫长的迭代过程,但我们可以考虑用空间换时间的做法,例如要证明100以内的偶数成立,就事先把100以内的奇数全部计算出来,存放在odd[N]数组中,然后逐个取出来,求目标偶数与这个奇数的差是也属于odd[N]中的元素,其实这个也需要迭代,很多的迭代,这是免不了的了,并且,如果要证明一个很大的偶数的话,可能需要很长的时间,或者很大的空间……程序限于时间,我暂时不写了。Top

6 楼ihcbo(☆心远☆)回复于 2006-03-07 14:17:43 得分 0

guogangj说得很有道理,支持!Top

7 楼imergang(二刚)回复于 2006-03-07 20:49:39 得分 0

?  
  Top

8 楼zh2817()回复于 2006-03-07 21:11:27 得分 6

#include<iostream.h>  
  #include<math.h>  
  void   main()  
  {  
  long   int   m,n;  
  int   k;  
  cout<<"输入一个大于6的整数:";  
  cin>>n;  
  for(int   i   =   6;i   <   n;   i   +=   2)//对小于n的每一个偶数进行验证  
  {  
  for(m   =   2;m   <=   i/2;m++)//循环A,将i分解成m和i-m  
  {  
  for(k   =   2;m   <=   sqrt(m);k++)//循环B,判断m是不是素数  
  if(m   %   k   ==   0)  
  break;//如果m不是素数,则退出循环B  
  if(k   <=   sqrt(m))   continue;//如果m不是素数,则结束循环A的本次循环  
  for(k   =   2;k   <=   sqrt(i   -   m);k++)//循环C,判断i-m是不是素数  
  if((i-m)   %   k   ==   0)   break;//如果i-m不是素数,则退出循环C  
  if(k   >sqrt(i   -   m))   break;//如果i-m是素数,则退出循环A  
  }  
  if(m   ==   i/2   +   1)//如果对任何m<i/2,m、i-m不都是素数,则歌德巴猜想不成立  
  {  
  cout<<"偶数i不能表示为两个素数之和!   \n";  
  break;  
  }  
  else  
  cout<<i<<"="<<m<<"+"<<i-m<<'\t';  
  if((i   -   4)   %   10   ==   0)//一个输出5个等式  
  cout<<'\n';  
  }  
  cout<<'\n';  
  }  
   
  Top

9 楼xiamin(夏敏)回复于 2006-03-07 23:29:46 得分 0

搂主有误  
  #include<iostream>  
  #include<cmath>  
  using   namespace   std;  
  int   main()  
  {  
  long   int   m,n;  
  int   k;  
  cout<<"输入一个大于6的整数:";  
  cin>>n;  
  for(int   i   =   6;i   <   n;   i   +=   2)//对小于n的每一个偶数进行验证  
  {  
  for(m   =   2;m   <=   i/2;m++)//循环A,将i分解成m和i-m  
  {  
  for(k   =   2;k<=   sqrt(m);k++)//循环B,判断m是不是素数  
  if(m   %   k   ==   0)  
  break;//如果m不是素数,则退出循环B  
  if(k   <=   sqrt(m))   continue;//如果m不是素数,则结束循环A的本次循环  
  for(k   =   2;k   <=   sqrt(i   -   m);k++)//循环C,判断i-m是不是素数  
  if((i-m)   %   k   ==   0)   break;//如果i-m不是素数,则退出循环C  
  if(k   >sqrt(i   -   m))   break;//如果i-m是素数,则退出循环A  
  }  
  if(m   ==   i/2   +   1)//如果对任何m<i/2,m、i-m不都是素数,则歌德巴猜想不成立  
  {  
  cout<<"偶数i不能表示为两个素数之和!   \n";  
  break;  
  }  
  else  
  cout<<i<<"="<<m<<"+"<<i-m<<'\t';  
  if((i   -   4)   %   10   ==   0)//一个输出5个等式  
  cout<<'\n';  
  }  
  cout<<'\n';  
  return   0;  
  }  
   
  Top

10 楼xiamin(夏敏)回复于 2006-03-07 23:34:22 得分 0

看看我写的!!!  
  #include<iostream>  
  #include<cmath>  
  using   namespace   std;  
  bool   prime(int   m)  
  {  
  for(int   k   =   2;k   <=   sqrt(m);k++)  
  { if(m   %   k   ==   0)  
      break;//如果m不是素数,则退出循环  
  }  
  if(k>sqrt(m))   //如果m是素数  
  return   true;  
  else  
  return   false;  
  }  
   
  int   main()  
  {  
  long   int   m,n;  
  int   k;  
  cout<<"输入一个大于6的整数:";  
  cin>>n;  
  for(int   i   =   6;i   <   n;   i   +=   2)//对小于n的每一个偶数进行验证  
  {  
  for(m   =   2;m   <=   i/2;m++)//循环A,将i分解成m和i-m  
  {  
  if   (prime(m)&&prime(i-m))  
  break;  
  }  
  if(m   ==   i/2   +   1)//如果对任何m<i/2,m、i-m不都是素数,则歌德巴猜想不成立  
  {  
  cout<<"偶数i不能表示为两个素数之和!   \n";  
  break;  
  }  
  else  
  cout<<i<<"="<<m<<"+"<<i-m<<'\t';  
  if((i   -   4)   %   10   ==   0)//一个输出5个等式  
  cout<<'\n';  
  }  
  cout<<'\n';  
  return   0;  
  }Top

11 楼xiamin(夏敏)回复于 2006-03-07 23:34:42 得分 0

如何??  
  Top

12 楼wowo05(不要怕,不要只是幻想,尊重别人,《JAVA》,不断学习,共同进步,)回复于 2006-03-08 09:14:00 得分 0

upTop

相关问题

  • ===我的======歌德巴赫猜想=======
  • 求BCD码加N的函数,谢谢!
  • 请问:求N次方根的函数?
  • 50分 = N*API函数(N大于等于1)
  • vb中保留n位小数的函数是什么?
  • delphi 中等待 n 毫秒的函数是什么呀?!
  • 请问c的n次乘方函数是什么?
  • 请问 求 X 的 n 次方根用什么函数?
  • 求用递归函数计算n!的代码
  • 有没有10的N次方这个函数?

关键词

  • 验证
  • 偶数
  • 巴赫
  • 素数
  • 迭代
  • 证明
  • sqrt
  • cout
  • 时间
  • long

得分解答快速导航

  • 帖主:xiamin
  • guogangj
  • zh2817

相关链接

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

广告也精彩

反馈

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