c++ - 哥德巴赫猜想程序编写中的问题

标签 c++ loops primes goldbach-conjecture

我正在学习编程,我的任务是用 C++ 编写一段代码,对于给定的偶数,将返回该数字作为两个素数之和。以前我设法编写了一段代码来检查数字是否为素数,但当我尝试应用它时,我的程序失败了。

#include <iostream>
using namespace std;

int main()
{
    int a,s1=0,s2=0;
    cout<<"Enter any even natural number greater than 3."<<endl;
    cin>>a;

    for(int i=0;i<a;++i)
    {

        for(int k=2;k<=i;++k)
        {
            if(i%k!=0) s1++;
        }
        for(int t=2;t<=(a-i);++t)
        {
            if((a-i)%t!=0) s2++;
        }
        if(s1==i-2 && s2==a-i-2) cout<<a<<"="<<i<<"+"<<a-i<<endl;

    }

    return 0;
}

最佳答案

据我所知,只需要进行一个小更改,您需要在循环内将 s1 和 s2 设置为零,而不仅仅是在 main 开头设置一次。

for(int i=0;i<a;++i)
{
    s1=s2=0;
    ...

现在(如果您愿意)使用名为 is_prime 的函数重写代码。该函数采用一个整数参数,如果该整数是质数则返回 true(如果不是质数则返回 false)。如果您一开始就编写了这样的函数,那么您就不会犯这样的错误。

通过编写函数将复杂的问题分解为更小的问题是编程中绝对重要的技能。

关于c++ - 哥德巴赫猜想程序编写中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63426460/

相关文章:

c++ - 无法弄清楚如何检查是否已输入任何内容

c++ - strcpy() 在 Visual Studio 2012 中的行为

c++ - 带有两个 mpf_t 的 gmp pow

c++ - 打开一个文件程序 w/while 循环 C++

sql - 按时间间隔对事件进行分组和计数,以及运行总计

c++ - 难以实现对每行 C++ 上打印的整数数量的限制

php - 找到唯一除数的有效方法

c - 计算第 n 个素数的最短方法是什么?

java - do while 循环错误

java - 如何使用 6*k +- 1 规则生成素数