哥德巴赫猜想:
如果任意一个大于6的偶数都可以写成两个素数之和。就将其称为符合哥德巴赫猜想。
#include
#include
///
/// 判断一个数是否是素数
///
/// 要判断的数
/// 如果是,返回true,否则,返回false
static bool IsPrimeNumber(int intNum)
{
bool blFlag = true;//标识是否是素数
if (intNum == 1 || intNum == 2)//判断输入的数字是否是1或者2
blFlag = true;//为bool类型变量赋值
else
{
int sqr =(int)(sqrt((double)intNum));//对要判断的数字进行开方运算
for (int i = sqr; i >= 2; i--)//从开方后的数进行循环
{
if (intNum % i == 0)//对要判断的数字和指定数字进行求余运算
{
blFlag = false;//如果余数为0,说明不是素数
}
}
}
return blFlag;//返回bool型变量
}
///
/// 判断一个数是否符合哥德巴赫猜想
///
/// 要判断的数
/// 如果符合,返回true,否则,返回false
static bool ISGDBHArith(int intNum)
{
bool blFlag = false;//标识是否符合哥德巴赫猜想
if (intNum % 2 == 0 && intNum > 6)//对要判断的数字进行判断
{
for (int i = 1; i <= intNum / 2; i++)
{
bool bl1 = IsPrimeNumber(i);//判断i是否为素数
bool bl2 = IsPrimeNumber(intNum - i);//判断intNum-i是否为素数
if (bl1 & bl2)
{
//输出等式
printf("%d=%d+%d\n",intNum, i, intNum - i);
blFlag = true;
//break;
//符合哥德巴赫猜想
}
}
}
return blFlag;//返回bool型变量
}
void main()
{
int a=0;
printf("输入一个大于6的偶数:\n");
scanf_s("%d",&a,10);
bool blFlag = ISGDBHArith(a);//判断是否符合哥德巴赫猜想
if (blFlag)
{
printf("%d能写成两个素数的和,所以其符合哥德巴赫猜想。",a);
}
getchar();
getchar();
}