首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

验证哥德巴赫猜想:一个不小于6的偶数n可以表示为两个素数之和 错哪了 多谢

2012-04-16 
验证哥德巴赫猜想:一个不小于6的偶数n可以表示为两个素数之和哪里错了谢谢#includeiostream#includecma

验证哥德巴赫猜想:一个不小于6的偶数n可以表示为两个素数之和 哪里错了 谢谢
#include<iostream>
#include<cmath>
using namespace std;
int main()
{void gotbaha(int n);
int n;
cout<<"输入一个大于6的偶数n:";
cin>>n;
gotbaha (n);
return 0;
}
void gotbaha(int n)
{int prime(int c);
int a,b;
for (a=3;a<n-3;a+=2)
{b=n-a;
if (prime(a)&&prime(b))
cout<<n<<"="<<a<<"+"<<b<<endl;break;
}
}
int prime(int c)
{int i;
for(i=2;i<=sqrt(c);i++)
{if(c%i!=0) return c;
else return 0;
}
}

[解决办法]

C/C++ code
#include<iostream>#include<cmath>using namespace std;int prime(int c);       //  这两个函数需要前置声明。void gotbaha(int n);int main(){    void gotbaha(int n);    int n;    do                  //  加个循环,测试时轻松些    {        cout<<"输入一个大于6的偶数n:";        cin>>n;        gotbaha (n);    }while(n>0);    return 0;}void gotbaha(int n){    //int prime(int c);       //  这里你是要做什么呢?    int a,b;    for (a=3;a<n-3;a+=2)    {        b=n-a;        if (prime(a)&&prime(b))        {                           //  这里要括起来,否则编译器可不会因为你把两条语句写在一行里就认为它们都属于if的子句。            cout<<n<<"="<<a<<"+"<<b<<endl;            break;        }    }}int prime(int c){    int i;    for(i=3;i<=sqrt((double)c);i+=2)     //  sqrt函数需要明确的参数类型;i从3开始就行了,因为不可能有2;步长设为2,因为i不可能是偶数    {        if(c%i==0)            return 0;       //  如果确认了这个数不是质数,返回0。    }    return 1;       //  它是质数,返回1。} 

热点排行