执花仗剑 2022-03-31 09:25 采纳率: 100%
浏览 35
已结题

哥德巴赫猜想循环问题请教

问题遇到的现象和发生背景

验证哥德巴赫猜想,最后运行的结果中一个偶数反复循环,把所有质数相加为偶数的情况都列出来了,如何使得一个偶数只循环一回,出现质数相加问题就进行下个偶数循环

#include <iostream>
using namespace std;
int main()
{
    int ou;
    for (ou = 4; ou <= 200; ou = ou + 2)
    {
        int a, i;
        for (a = 2; a < 200; a++)
        {
            int d;
            for (i = 2; i < a; i++)
            {
                d = a % i;
                if (d == 0)
                {
                    break;
                }

            }
            if (i == a)
            {

                int a1, i1;
                for (a1 = 2; a1 < 200; a1++)
                {
                    int d1;
                    for (i1 = 2; i1 < a1; i1++)
                    {
                        d1 = a1 % i1;
                        if (d1 == 0)
                        {
                            break;
                        }
                    }
                    if (i1 == a1)//并且偶数==a1+a;则输出偶数==a1+a;
                    {
                        if (ou == a1 + a)
                        {
                            cout << ou << "=" << a1 << "+" << a << endl;
                            break;


                        }
                        
                    }

                }

            }
        }
        
    }


    
}

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    添加一个flag变量,在输出一次后就把flag=1,然后结束本次for循环即可。

    代码修改如下:

    #include <iostream>
    using namespace std;
    int main()
    {
        int ou;
        int flag = 0;
        for (ou = 4; ou <= 200; ou = ou + 2)
        {
            int a, i;
            flag = 0;
            for (a = 2; a < 200; a++)
            {
                int d;
                for (i = 2; i < a; i++)
                {
                    d = a % i;
                    if (d == 0)
                    {
                        break;
                    }
    
                }
                if (i == a)
                {
    
                    int a1, i1;
                    for (a1 = 2; a1 < 200; a1++)
                    {
                        int d1;
                        for (i1 = 2; i1 < a1; i1++)
                        {
                            d1 = a1 % i1;
                            if (d1 == 0)
                            {
                                break;
                            }
                        }
                        if (i1 == a1)//并且偶数==a1+a;则输出偶数==a1+a;
                        {
                            if (ou == a1 + a)
                            {
                                cout << ou << "=" << a1 << "+" << a << endl;
                                flag = 1;
                                break;
                            }
    
                        }
    
                    }
                    if (flag == 1)
                        break;
    
                }
            }
    
        }
    
    
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图