1. 程式人生 > >哥德巴赫猜想(驗證2000以內的正偶數能夠分解成兩個素數之和)

哥德巴赫猜想(驗證2000以內的正偶數能夠分解成兩個素數之和)

哥德巴赫猜想:

          任何一個大於6的偶數都可以表示成兩個素數之和,任何一個大於9的奇數都可以表示成三個素數之和。

試驗證2000以內的正偶數能夠分解成兩個素數之和:

#include <iostream>
#include <math.h>
using namespace std;
//驗證2000以內的正偶數能夠分解成兩個素數之和
	//判斷是否為素數 
	int fflag(int i)
	{
		int j;
		//<=1不是素數 
		if(i<=1)
		{
			return 0;
		} 
		//2是素數 
		if(i==2)
		{
			return 1;
		} 
		//如果是偶數返回0 
		if(!(i%2))
		{
			return 0;
		}
		for(j=3;j<=(int)(sqrt((double)i)+1);j+=2)
		{
			if(!(i%j))
			{
				return 0;
			}
			return 1;			
		} 		
	}
int main(int argc, char** argv) {
	int i,n;
	//2000以內的正偶數,從4開始,步長為2 
	for(i=4;i<=2000;i++)
	{
		for(n=2;n<i;n++)//將偶數i分解為兩個整數 
		{
			if(fflag(n))//從2開始迴圈判斷是否為素數 
			 if(fflag(i-n))//判斷i-n是否為素數 
			 {//分解為兩個素數之和則輸出 
			 	cout<<i<<"="<<n<<"+"<<i-n<<endl;
			 	break;
			 }
		}
		if(n==i)
			cout<<"error\n";
	}
	return 0;
}