| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5940 人关注过本帖
标题:哥德巴赫猜想
只看楼主 加入收藏
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
结帖率:100%
收藏
 问题点数:0 回复次数:7 
哥德巴赫猜想
哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示.

感觉应该是函数的部分没搞清楚,请高人指点一下.谢谢啦!
运行了,输入数字之后,好像没什么反应哦......

#include<stdio.h>
#include<math.h>
long isprime(long n)/*是素数返回1,不是返回0*/
{
      long i;
      for(i=2;i<=sqrt(n);i++)
      {if(n%i==0)break;}
      if(i>sqrt(n)) return 1;
      else return 0;
}

main()
{
 long p,q,m;
 printf("Plesae input a number:");/*先不判断它是否是偶数了,后面我再加上去*/
 scanf("%ld",&m);
 for(p=2;p<=m-p;p++)
 {if(isprime(p)&&isprime(q))printf("%ld=%ld+%ld",m,p,q);}
 getchar();
 getchar();

[[italic] 本帖最后由 meteor57 于 2007-12-28 13:58 编辑 [/italic]]
搜索更多相关主题的帖子: 哥德巴赫猜想 
2007-12-27 20:59
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long isprime(long n)/*是素数返回1,不是返回0*/
{
      long i;
      for(i=2;i<=sqrt(n);i++)
          if(n%i==0)
          return 0;
      return 1;
}

int main()
{
    long p,q,m;
    printf("Plesae input a number:");/*先不判断它是否是偶数了,后面我再加上去*/
    scanf("%ld",&m);
    for(p=2;p<=m/2;p++)
        if(isprime(p)&&isprime(m-p))
            printf("%ld=%ld+%ld\n",m,p,m-p);
    system("pause");
    return 0;
}
把你的程序改了下,基本能实现了!你的错误在q是什么?
另外,这个题目很多oj上都有,按这算法肯定超时!首先,验证素数的方法费时,其次,在考虑p和m-p时并不需要所有的都考虑,除了4之外,其他的都不用考虑偶数的情况!
2007-12-27 22:39
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
#include<stdio.h>
#include<math.h>
long isprime(long n)/*是素数返回1,不是返回0*/
{
      long i;
      for(i=2;i<=sqrt(n);i++)
      {if(n%i==0)break;}
      if(i>sqrt(n)) return 1;
      else return 0;
}

void main()
{
long p,q,m;
printf("Plesae input a even number:");/*先判断它是否是偶数了*/
scanf("%ld",&m);
while(m%2!=0){
    printf("Plesae input a even number:");
    scanf("%ld",&m);
}
for(p=2;p<=m/2;p++)
{    q=m-p;
    if(isprime(p) && isprime(q))
    printf("%ld=%ld+%ld\n",m,p,q);
}
getchar();
}

[[italic] 本帖最后由 blueboy82006 于 2007-12-27 22:44 编辑 [/italic]]

2007-12-27 22:42
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
跟楼上一样哦,也只是改了一下,高效率的我是不会了啊...

2007-12-27 22:43
loosky
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-12-27
收藏
得分:0 
楼上的不错
2007-12-27 22:47
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
谢谢各位了.原来在for(p=2;p<=m/2;p++){    ...   }中漏了q=m-p;以致......

请问"無邪的睡脸""很多oj"中的oj指的是什么啊?

顺便再问一下,好像我在用论坛的搜索功能时,可以搜到,但一点击老是找不到网页,这是什么回事啊?

根据两位的思路改了一下就好了,效率也高了一倍!

/*哥德巴赫猜想*/
#include<stdio.h>
#include<math.h>
long isprime(long n)/*是素数返回1,不是返回0*/
{
      long i;
      for(i=2;i<=sqrt(n);i++)
      {if(n%i==0)break;}
      if(i>sqrt(n)) return 1;
      else return 0;
}

main()
{
 long p,q,m;
 printf("Plesae input a even:");
 while(1)
 {
  scanf("%ld",&m);
  if(m%2!=0)printf("Please input a even:\n");
  else break;
 }

if(m==4){printf("4=2+2");getchar();getchar();return 0;}
 for(p=3;p<=m/2;p=p+2)

 {
  q=m-p;  
  if(isprime(p)&&isprime(q))printf("%ld=%ld+%ld\n",m,p,q);
 }
 getchar();
 getchar();
}

[[italic] 本帖最后由 meteor57 于 2007-12-28 13:42 编辑 [/italic]]
2007-12-28 13:39
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
又改了下!oj即online judge.
程序代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int isprime(long n)//判断大于2的数是否素数 
{
    long i;
    for(i=3;i<=sqrt(n);i+=2)
        if(n%i==0)
            return 0;
    return 1;
}

int main()
{
    long p,m;
    do
    {

         printf("Please input a even:\n");
        scanf("%ld",&m);
    }while(m%2!=0);
    if(m==4)
        printf("4=2+2");
    else
        for(p=3;p<=m/2;p=p+2)
              if(isprime(p)&&isprime(m-p))
            {    
                printf("%ld=%ld+%ld\n",m,p,m-p);
                break;//只需要找出一种就可以了. 
            }
    system("pause");
    return 0;
}
2007-12-28 14:25
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
好算法,素数应该不考虑除2以外的偶数,真是太感谢了,让我又学会一招!!!
2007-12-28 23:35
快速回复:哥德巴赫猜想
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027962 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved