搜索
查看: 744|回复: 2
打印 上一主题 下一主题

第122页请在4~100内验证哥德巴赫猜想这个题目的一点疑问

[复制链接]
跳转到指定楼层
楼主
发表于 2016-9-16 19:56:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,k,d,fa,fb,i;
    scanf("%d",&d);//输入d值确认需要验证得范围值
    for(k=4;k<=d;k=k+2)//4到输入得范围值之间偶数判定
    {
                printf("%d",k);//打印需要验证的数;(此处为什么不是每个验证值都打印出来?)
        for(a=2;a<=k/2;a++)//两个质数之和,第一个数判定是否为质数
        {
                        fa=0;//初始fa=0       
            for(i=2;i<=a-1;i++)//被除数设定循环方法
            {
                                if(a%i==0)//如果a为合数,
                {
                                        fa=1;//fa=1,
                    break;//并跳出此循环;
                }
            }
            if(fa==0)//fa为零时,a为质数,所以当a为质数时进行下面语句
            {
                                b=k-a;//b+a需要等于k
                                fb=0;//fb初始化为零
                for(i=2;i<=b-1;i++)//循环判断b是否为质数
                {
                                        if(b%i==0)//如果b为合数,
                    {
                                                fb=1;//fb=1,
                        break;//并跳出此循环;
                    }
                }
                if(fb==0)//如果fb=0,b为质数,
                {
                                        printf("=%d+%d",a,b);//打印a+b
                    continue;//跳过后面语句,继续循环;
                }
            }
        }
        puts("");//一个数所有验证语句完成后,换行继续下一个数得验证
    }
        system("pause");
        return 0;
}[/mw_shl_code]
问题在程序第九行
沙发
 楼主| 发表于 2016-9-16 20:02:40 | 只看该作者
我弄明白了,上面的程序是必然每个偶数都会打印的吧?
但是这是建立在所有偶数都可以由两个质数相加的前提下的;
那么如果我不想打印不能通过这个验证的偶数,程序该怎么编呢?
板凳
发表于 2016-9-17 09:23:50 | 只看该作者
把9行删掉
然后把35行改为
  1. printf("%d=%d+%d",k,a,b);//打印a+b
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表