如何解决编写哥德巴赫猜想程序时遇到的问题
我只是在学习编程,我的任务是用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。如果您首先编写了这样的函数,那么您就不会犯错了。
通过编写函数将复杂的问题分解成较小的问题是编程中必不可少的技能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。