top1编程
← 返回题目
题解

【基础】哥德巴赫猜想

1 条题解

  • 0
    @ 2026-7-29 0:18:05
    #include<bits/stdc++.h>//271 哥德巴赫猜想的所有解
    using namespace std;
    
    bool zs(int x){ //模版写法 判断接收的数是否是质数 
    	if(x<2) return 0; //返回0表示x不是质数
    	//在1~x之间找到一个因数就说明x不是质数 
    	for(int i=2;i*i<=x;i++){  
    		if(x%i==0){
    			return 0;  
    		}
    	}
    	return 1; //返回1表示x是质数 
    }
    
    int main(){
    	int a,s=0; //s计数器用来统计符合条件的情况数量 先清空 
    	cin>>a;//大于9的奇数
    	for(int i=2;i<a;i++){ //先循环用i找第一个加数 
    		for(int j=2;j<a;j++){ //嵌套循环用j找第二个加数 第三个加数就是a-i-j 
    			//判断三个加数必须都是质数 并且是按照从小到大的顺序排列的 
    			if(zs(i)&&zs(j)&&zs(a-i-j)&&i<=j&&j<=a-i-j){
    				s++; //符合上述条件就把计数器+1 	
    			}
    		} 	
    	}
    	cout<<s<<endl; //先按题目要求输出一共有几种情况并换行
    	//与上面一样的把循环嵌套和逻辑判断代码复制一遍 输出具体的情况 
    	for(int i=2;i<a;i++){
    		for(int j=2;j<a;j++){
    			if(zs(i)&&zs(j)&&zs(a-i-j)&&i<=j&&j<=a-i-j){
    				//按题目的输出格式输出每一种情况 注意换行 
    				cout<<a<<"="<<i<<"+"<<j<<"+"<<a-i-j<<endl;	
    			}
    		} 	
    	} 
    	return 0;
    }
    
    • 1