写哥德巴赫猜想程序的问题
Problem in writing Goldbach conjecture program
我只是在学习编程,我的任务是用 C++ 编写代码,对于给定的偶数,将 return 这个数字作为两个素数的总和。以前我设法编写了一个代码来检查数字是否为质数,但是当我尝试应用它时,我的程序失败了。
#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
的函数重写代码。此函数采用一个整数参数,如果整数是素数,则 returns 为真(否则为假)。如果您首先编写了这样一个函数,那么您就不会犯下您所犯的错误。
通过编写函数将复杂的问题分解成更小的问题是编程中绝对重要的技能。
我只是在学习编程,我的任务是用 C++ 编写代码,对于给定的偶数,将 return 这个数字作为两个素数的总和。以前我设法编写了一个代码来检查数字是否为质数,但是当我尝试应用它时,我的程序失败了。
#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
的函数重写代码。此函数采用一个整数参数,如果整数是素数,则 returns 为真(否则为假)。如果您首先编写了这样一个函数,那么您就不会犯下您所犯的错误。
通过编写函数将复杂的问题分解成更小的问题是编程中绝对重要的技能。