哥德巴赫猜想的程序找错

来源:百度知道 编辑:UC知道 时间:2024/06/13 19:06:01
程序如下:运行时不能得到正确结果
//将一个偶数分解成两个素数相加
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
bool odds(int x,int y);//判断素数的函数
int a,i,j,k=0;
bool prime=true;
cout<<"请输入一个大于4的偶数:";
cin>>a;
if(a%2!=0) {cout<<"对不起,你输入的数不是偶数,请重新输入:";cin>>a;}
j=a/2;
for(i=3;i<=j;i+=2)
{
odds(i,a-i);//i为第一个加数,a-i为第二个加数
if(prime) {cout<<"a="<<i<<"+"<<(a-i)<<endl;k++;}
}
cout<<a<<"共可以分成"<<k<<"对素数相加!"<<endl;
return 0;
}
bool odds(int x,int y)//判断两个加数是否为素数
{
int m;
bool prime1=true,prime2=true,prime=true;
for(m=3;m<=sqrt(x);m+=2)
{
if(x%m==0) {prime1=false;break;}
}
for(m=3;m<=sqrt(y);m+=2)
{
if(y%m==0) {prime2=false;break;}
}
if(prime1==false||prim

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
bool odds(int x,int y);//判断素数的函数
int a,i,j,k=0;
bool prime=true;
cout<<"请输入一个大于4的偶数:";
cin>>a;
while(a%2!=0) ////////////////////////if修改为while
{cout<<"对不起,你输入的数不是偶数,请重新输入:";cin>>a;}
j=a/2;
for(i=3;i<=j;i+=2)
{
prime=odds(i,a-i);////////////////////////要用odds()函数的返回值给prime赋值
if(prime)
{cout<<"a="<<i<<"+"<<(a-i)<<endl;k++;}
}
cout<<a<<"共可以分成"<<k<<"对素数相加!"<<endl;
return 0;
}

bool odds(int x,int y)//判断两个加数是否为素数
{
bool prime1=true,prime2=true,prime=true;
int m;

for(m=3;m<=sqrt(x);m+=2)
{
if(x%m==0)
{prime1=false;break;}
}
for(m=3;m<=sqrt(y);m+=2)
{
if(y%