2

我只是在学习编程,我的任务是用 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;
}
4

1 回答 1

2

我可以看到只需要一个小的更改,您需要在循环内将 s1 和 s2 设置为零,而不仅仅是在main.

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

现在(如果您愿意的话)使用一个名为is_prime. 此函数接受一个整数参数,如果整数是素数则返回 true(否则返回 false)。如果你一开始就写了这样一个函数,那么你就不会犯你所犯的错误。

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

于 2020-08-15T13:23:53.677 回答