验证哥德巴赫猜想
数据机构王晓东 第三版 ,19页算法实验题1的第1题:哥德巴赫猜想
题目要求:输入一个大偶数,验证可以有几对质数之和,并输出个数,输入0则退出。
哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和。
我的算法比较无脑暴力,就是验证i和n-i是否是质数。
而验证一个数是否是质数,就是对这个数num取余,取余的范围是[2,√num]。只要等于0就不是素数。
以下代码,供大家参考
#include<iostream>
#include<math.h>
using namespace std;
bool IsPrime(const unsigned int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
unsigned int num;
while(cin>>num&&num)
{
int sum=0;
for(unsigned int i=2;i<=num/2;i++)
if(IsPrime(i)&&IsPrime(num-i))
sum++;
cout<<sum<<endl;
}
return 0;
}