标题:感谢之前帮过我的童鞋们,我又有问题了。。。
只看楼主
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
结帖率:92.86%
已结贴  问题点数:20 回复次数:2 
感谢之前帮过我的童鞋们,我又有问题了。。。
验证歌德巴赫猜想。歌德巴赫猜想的大致内容为:任何大于6的偶数,都可以写成两个素数的和。
大于六的部分 用if条件句
但后半部分 分为两个素数。。
这个该如何输出。我不知怎么办。。
能不能给点小思路?
谢谢谢谢。。
搜索更多相关主题的帖子: 童鞋 如何 歌德巴赫 
2011-10-31 22:03
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:10 
for(n=8;n<=10000;n+=2)
{
    flag=0;
    for(i=3;i<=n/2;i++)
    {
        j=n-i;
        if(i是素数&&j是素数)
        {
            flag=1;//////
        }
    }
    if(!flag)
    {break;}
}
if(flag){printf("歌德巴赫猜想在8-10000成立。\n");}
else {printf("歌德巴赫猜想不成立。\n");}


[ 本帖最后由 laznrbfe 于 2011-10-31 23:01 编辑 ]
2011-10-31 22:49
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:10 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int n,i,j,flag,s;
    int IsPrime(int n);
    for(n=8;n<=10000;n+=2)
    {
        flag=0;
        s=n/2;
        for(i=3;i<s;i++)
        {
            j=n-i;
            if(IsPrime(i)&&IsPrime(j))
            {
                flag=1;///////
            }
        }
        if(!flag)
        {
            printf("%d=%d+%d\n",n,i,j);
            break;
        }
    }
    if(flag)
    {
        printf("歌德巴赫猜想在8-10000成立。\n");
    }
    else
    {
        printf("歌德巴赫猜想不成立。\n");
    }

    return 0;
}
int IsPrime(int n)
{
    int i,s;
    s=(int)sqrt(n);
    if(2==n)
    {
        return 1;
    }
    for(i=2;i<s;i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;
}
代码参考:

2011-10-31 23:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-353941-1-1.html




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

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