| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 240 人关注过本帖
标题:(已解决)
只看楼主 加入收藏
东林石头
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-10-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
(已解决)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//判断结果是否为素数,是素数返回1,否则返回0
int isPrime(int i)
{
    int n, flag = 1;

    if (1 == i)
    {
        return 0;
    }
    for (n = 2; n < i; n++)
    {
        if (i % n == 0)
        {
            flag = 0;
            break;
        }
    }
    if (1 == flag)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
//判断偶数X是否符合哥德巴赫猜想,符合返回1,不符合返回0
int isGoldbach(int x)
{
    int i, flag = 0;
    for (i = 1; i < x / 2; i++)
    {
        if (isPrime(i) && isPrime(x - i)) //如果i和i-1都为素数,则符合条件,标记然后退出循环
        {
            flag = 1;
            printf("%d = %d + %d", x, i, x - i);
            break;
        }
    }
    if (1 == flag)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
//在low和high范围验证哥德巴赫猜想
int testGB_s(int low, int high)
{
    int i, j = 0;
    int flag = 0;
    for (i = low; i < high; i++)
    {
        if (i % 2 == 0 && i>2)
        {
            if (isGoldbach(i))
            {
                j++;
                if (5 == j)
                {
                    printf("\n");
                    j = 0;
                }
            }
            else
            {
                flag = 0;
                break;
            }
            
        }
    }
    if (i == flag)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    clock_t start = 0, finish = 0;
    double  duration = 0.00;
    start = clock();
    int low, high;
    printf("请输入两个数来验证哥德巴赫猜想,数的范围为low-high\n");
    printf("low: ");
    scanf_s("%d", &low);
    printf("\nhigh: ");
    scanf_s("%d", &high);

    if (testGB_s(low, high))
    {
        printf("在%d和%d的范围内,所有的偶数都能分解成两个质数相加,哥德巴赫猜想成立\n", low, high);
    }
    else
    {
        printf("在%d和%d的范围内,不是所有的偶数都能分解成两个质数相加,哥德巴赫猜想不成立\n", low, high);
    }
    /* 测量这个事件持续的时间*/
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf("整个验证过程所用时间为%f seconds\n", duration);
    system("pause");
}


结果老是验证不成立..各位大侠们看看

[ 本帖最后由 东林石头 于 2014-1-27 14:09 编辑 ]
2014-01-26 21:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
以前写的

程序代码:
#include <stdio.h>

int issh(int x)
{ 
    //返回1 表示是一个素数
    if(x<=1) return 0;
    if(x>1)    for(int i=2;i<x;i++) if(x%i==0) return 0;
    return 1;
}

int main()
{
    int i,j;
    int k=0;
    for(j=4;j<9999;j+=2)
    {
        for(i=1;i<j;i++)
        {
            if(issh(i)==1 && issh(j-i)==1) 
            {
                printf("%d=%d+%d\n",j,j-i,i);
                k++;
                break;
            }
        }
        if(k==0) printf("%d不能被分解成2个素数之和.\n",j);
    }
    return 0;
}

DO IT YOURSELF !
2014-01-27 11:39
东林石头
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-10-9
收藏
得分:0 
回复 2楼 wp231957
谢谢啦,我已经修改完毕,,搞清楚问题所在咯 ..感谢回复
2014-01-27 14:09
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
不要修改一楼主标题  不好

DO IT YOURSELF !
2014-01-27 14:15
快速回复:(已解决)
数据加载中...
 
   



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

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