c语言验证哥德巴赫猜想

什么是哥德巴赫猜想,哥德巴赫猜想就是,任一大于2的偶数都可以写成两个素数之和,那么下面我们就用c语言去验证这种猜想 什么是哥德巴赫猜想,哥德巴赫猜想就是,任一大于2的偶数都可以写成两个素数之和,那么下面我们就用c语言去验证这种猜想
#include<stdio.h>
#include<math.h> 

/*判断一个数是不是素数,如果是则返回true,否则返回false*/
bool IsPrimer(unsigned intNum)
{
	bool bFlag = true;
	
	if(1 == intNum || 2 == intNum)
	{
		bFlag = true;	
	}
	else
	{
		//取intNum的平方根 
		int sqr = (int)sqrt((double)intNum);
		
		for(int i = sqr; i >= 2; i--)
		{
			if(intNum % i == 0)
			{
				bFlag = false;
			}
		} 
	}
	
	return bFlag;	
}

/*判断是否符合哥德巴赫猜想,如果符合返回true,否则返回false*/
bool IsGdbhArith(unsigned intNum)
{
	bool bFlag = false;
	
	if((intNum >= 2) && (intNum % 2 == 0))
	{
		for(int i = 1; i <= intNum / 2; i++)
		{
			if(IsPrimer(i) && IsPrimer(intNum - i))
			{
				bFlag = true;
				printf("%d is primer, %d + %d
",intNum,i,intNum - i);
			}
		}
		
	}
	
	return bFlag;
} void main()
{
	unsigned intNum = 0; printf("please input a number:%d
"); scanf("%d",&intNum);
	if(IsGdbhArith(intNum))
	{
		//do nothing
	}
	else
	{
		printf("This number isnt a primer
");
	}
	
	system("pause");	
}
#include #include /*判断一个数是不是素数,如果是则返回true,否则返回false*/ bool IsPrimer(unsigned intNum) { bool bFlag = true; if(1 == intNum || 2 == intNum) { bFlag = true; } else { //取intNum的平方根 int sqr = (int)sqrt((double)intNum); for(int i = sqr; i >= 2; i--) { if(intNum % i == 0) { bFlag = false; } } } return bFlag; } /*判断是否符合哥德巴赫猜想,如果符合返回true,否则返回false*/ bool IsGdbhArith(unsigned intNum) { bool bFlag = false; if((intNum >= 2) && (intNum % 2 == 0)) { for(int i = 1; i <= intNum / 2; i++) { if(IsPrimer(i) && IsPrimer(intNum - i)) { bFlag = true; printf("%d is primer, %d + %d ",intNum,i,intNum - i); } } } return bFlag; } void main() { unsigned intNum = 0; printf("please input a number:%d "); scanf("%d",&intNum); if(IsGdbhArith(intNum)) { //do nothing } else { printf("This number isnt a primer "); } system("pause"); }
经验分享 程序员 微信小程序 职场和发展