我正在学习编程,我的任务是用 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/