C++验证哥德巴赫猜想

供参考:

#include<stdio.h>

int  isPrime(int n)
{
    int i;
    if(n<=3) return n>1;
    for(i=2;i*i<=n;i++)
       if(n%i == 0) return 0;
    return 1;
}

int main()
{
    int i,n,flg=0;
    scanf("%d",&n);
    if(n<4 || n>4000 || n%2!=0){
       printf("INPUT ERROR\n");
       return 1;
    }
    for(i = 2; i <= n/2; i++){
        if(isPrime(i) && isPrime(n-i)){
           printf("%-d=%-d+%-d\n",n,i,n-i);//输出
           flg=1;
           break;
        }
    }
    if(flg==0)printf("it is wrong.\n");
    
    return 0;
}

 

这个挺简单的,写一个判断素数的函数,再写一个求某整数所有因子的函数就可以了。

bool pris(int n) 
{//素数
	if(n<2) return false;
	for(int i=2; i<n; i++) 
	{
		if(n%i==0) return false;
	}
	return true;
}

int main()
{
	int n,i;
	scanf("%d",&n);
	if(n >= 4)
	{
		bool bFind = false;
		for(i=2;i<=n/2;i++)
		{
			int m = n-i;
			if(pris(m) && pris(i))
			{
				printf("%d=%d+%d",n,i,m);
				bFind = true;
				break;
			}
		}
		if(!bFind)
			printf("INPUT ERROR");
	}
 
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632