验证哥德巴赫猜想:一个不小于6的偶数n可以表示为两个素数之和 错哪了 多谢
验证哥德巴赫猜想:一个不小于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;
}
}
------解决方案--------------------
#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。 }